radeonsi: fix Hyper-Z on Stoney
[mesa.git] / src / gallium / drivers / radeon / radeon_elf_util.c
index fd0632b7500e4b3fcb6aad8a1eb68717e122ffd3..2e45d439e7a0d4078d2a5d3ac575db8a80465d78 100644 (file)
@@ -103,15 +103,14 @@ static void parse_relocs(Elf *elf, Elf_Data *relocs, Elf_Data *symbols,
 }
 
 void radeon_elf_read(const char *elf_data, unsigned elf_size,
-                                       struct radeon_shader_binary *binary,
-                                       unsigned debug)
+                    struct radeon_shader_binary *binary)
 {
        char *elf_buffer;
        Elf *elf;
        Elf_Scn *section = NULL;
        Elf_Data *symbols = NULL, *relocs = NULL;
        size_t section_str_index;
-       unsigned symbol_sh_link;
+       unsigned symbol_sh_link = 0;
 
        /* One of the libelf implementations
         * (http://www.mr511.de/software/english.htm) requires calling
@@ -124,7 +123,6 @@ void radeon_elf_read(const char *elf_data, unsigned elf_size,
        elf = elf_memory(elf_buffer, elf_size);
 
        elf_getshdrstrndx(elf, &section_str_index);
-       binary->disassembled = 0;
 
        while ((section = elf_nextscn(elf, section))) {
                const char *name;
@@ -145,12 +143,11 @@ void radeon_elf_read(const char *elf_data, unsigned elf_size,
                        binary->config_size = section_data->d_size;
                        binary->config = MALLOC(binary->config_size * sizeof(unsigned char));
                        memcpy(binary->config, section_data->d_buf, binary->config_size);
-               } else if (debug && !strcmp(name, ".AMDGPU.disasm")) {
-                       binary->disassembled = 1;
+               } else if (!strcmp(name, ".AMDGPU.disasm")) {
+                       /* Always read disassembly if it's available. */
                        section_data = elf_getdata(section, section_data);
-                       fprintf(stderr, "\nShader Disassembly:\n\n");
-                       fprintf(stderr, "%.*s\n", (int)section_data->d_size,
-                                                 (char *)section_data->d_buf);
+                       binary->disasm_string = strndup(section_data->d_buf,
+                                                       section_data->d_size);
                } else if (!strncmp(name, ".rodata", 7)) {
                        section_data = elf_getdata(section, section_data);
                        binary->rodata_size = section_data->d_size;