This series is,
Acked-by: Edward O'Callaghan <funfunc...@folklore1984.net>

On 01/04/2017 06:17 AM, Marek Olšák wrote:
> From: Marek Olšák <marek.ol...@amd.com>
> 
> ---
>  src/gallium/drivers/radeonsi/si_compute.c       |  2 +-
>  src/gallium/drivers/radeonsi/si_debug.c         |  2 +-
>  src/gallium/drivers/radeonsi/si_shader.c        | 20 +++++++++++---------
>  src/gallium/drivers/radeonsi/si_shader.h        |  2 +-
>  src/gallium/drivers/radeonsi/si_state_shaders.c |  2 +-
>  5 files changed, 15 insertions(+), 13 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeonsi/si_compute.c 
> b/src/gallium/drivers/radeonsi/si_compute.c
> index cb14a35..fe29fb1 100644
> --- a/src/gallium/drivers/radeonsi/si_compute.c
> +++ b/src/gallium/drivers/radeonsi/si_compute.c
> @@ -163,21 +163,21 @@ static void *si_create_compute_state(
>               radeon_elf_read(code, header->num_bytes, 
> &program->shader.binary);
>               if (program->use_code_object_v2) {
>                       const amd_kernel_code_t *code_object =
>                               si_compute_get_code_object(program, 0);
>                       code_object_to_config(code_object, 
> &program->shader.config);
>               } else {
>                       si_shader_binary_read_config(&program->shader.binary,
>                                    &program->shader.config, 0);
>               }
>               si_shader_dump(sctx->screen, &program->shader, &sctx->b.debug,
> -                            PIPE_SHADER_COMPUTE, stderr);
> +                            PIPE_SHADER_COMPUTE, stderr, true);
>               if (si_shader_binary_upload(sctx->screen, &program->shader) < 
> 0) {
>                       fprintf(stderr, "LLVM failed to upload shader\n");
>                       FREE(program);
>                       return NULL;
>               }
>       }
>  
>       return program;
>  }
>  
> diff --git a/src/gallium/drivers/radeonsi/si_debug.c 
> b/src/gallium/drivers/radeonsi/si_debug.c
> index 1090dda..a1cd9e5 100644
> --- a/src/gallium/drivers/radeonsi/si_debug.c
> +++ b/src/gallium/drivers/radeonsi/si_debug.c
> @@ -38,21 +38,21 @@ static void si_dump_shader(struct si_screen *sscreen,
>  {
>       struct si_shader *current = state->current;
>  
>       if (!state->cso || !current)
>               return;
>  
>       if (current->shader_log)
>               fwrite(current->shader_log, current->shader_log_size, 1, f);
>       else
>               si_shader_dump(sscreen, state->current, NULL,
> -                            state->cso->info.processor, f);
> +                            state->cso->info.processor, f, false);
>  }
>  
>  /**
>   * Shader compiles can be overridden with arbitrary ELF objects by setting
>   * the environment variable 
> RADEON_REPLACE_SHADERS=num1:filename1[;num2:filename2]
>   */
>  bool si_replace_shader(unsigned num, struct radeon_shader_binary *binary)
>  {
>       const char *p = debug_get_option_replace_shaders();
>       const char *semicolon;
> diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
> b/src/gallium/drivers/radeonsi/si_shader.c
> index 8dec55c..5dfbd66 100644
> --- a/src/gallium/drivers/radeonsi/si_shader.c
> +++ b/src/gallium/drivers/radeonsi/si_shader.c
> @@ -6162,21 +6162,22 @@ static void si_shader_dump_disassembly(const struct 
> radeon_shader_binary *binary
>                               binary->code[i + 3], binary->code[i + 2],
>                               binary->code[i + 1], binary->code[i]);
>               }
>       }
>  }
>  
>  static void si_shader_dump_stats(struct si_screen *sscreen,
>                                struct si_shader *shader,
>                                struct pipe_debug_callback *debug,
>                                unsigned processor,
> -                              FILE *file)
> +                              FILE *file,
> +                              bool check_debug_option)
>  {
>       struct si_shader_config *conf = &shader->config;
>       unsigned num_inputs = shader->selector ? 
> shader->selector->info.num_inputs : 0;
>       unsigned code_size = si_get_shader_binary_size(shader);
>       unsigned lds_increment = sscreen->b.chip_class >= CIK ? 512 : 256;
>       unsigned lds_per_wave = 0;
>       unsigned max_simd_waves = 10;
>  
>       /* Compute LDS usage for PS. */
>       switch (processor) {
> @@ -6213,21 +6214,21 @@ static void si_shader_dump_stats(struct si_screen 
> *sscreen,
>       }
>  
>       if (conf->num_vgprs)
>               max_simd_waves = MIN2(max_simd_waves, 256 / conf->num_vgprs);
>  
>       /* LDS is 64KB per CU (4 SIMDs), which is 16KB per SIMD (usage above
>        * 16KB makes some SIMDs unoccupied). */
>       if (lds_per_wave)
>               max_simd_waves = MIN2(max_simd_waves, 16384 / lds_per_wave);
>  
> -     if (file != stderr ||
> +     if (!check_debug_option ||
>           r600_can_dump_shader(&sscreen->b, processor)) {
>               if (processor == PIPE_SHADER_FRAGMENT) {
>                       fprintf(file, "*** SHADER CONFIG ***\n"
>                               "SPI_PS_INPUT_ADDR = 0x%04x\n"
>                               "SPI_PS_INPUT_ENA  = 0x%04x\n",
>                               conf->spi_ps_input_addr, 
> conf->spi_ps_input_ena);
>               }
>  
>               fprintf(file, "*** SHADER STATS ***\n"
>                       "SGPRS: %d\n"
> @@ -6284,50 +6285,51 @@ static const char *si_get_shader_name(struct 
> si_shader *shader,
>               return "Pixel Shader";
>       case PIPE_SHADER_COMPUTE:
>               return "Compute Shader";
>       default:
>               return "Unknown Shader";
>       }
>  }
>  
>  void si_shader_dump(struct si_screen *sscreen, struct si_shader *shader,
>                   struct pipe_debug_callback *debug, unsigned processor,
> -                 FILE *file)
> +                 FILE *file, bool check_debug_option)
>  {
> -     if (file != stderr ||
> +     if (!check_debug_option ||
>           r600_can_dump_shader(&sscreen->b, processor))
>               si_dump_shader_key(processor, &shader->key, file);
>  
> -     if (file != stderr && shader->binary.llvm_ir_string) {
> +     if (!check_debug_option && shader->binary.llvm_ir_string) {
>               fprintf(file, "\n%s - main shader part - LLVM IR:\n\n",
>                       si_get_shader_name(shader, processor));
>               fprintf(file, "%s\n", shader->binary.llvm_ir_string);
>       }
>  
> -     if (file != stderr ||
> +     if (!check_debug_option ||
>           (r600_can_dump_shader(&sscreen->b, processor) &&
>            !(sscreen->b.debug_flags & DBG_NO_ASM))) {
>               fprintf(file, "\n%s:\n", si_get_shader_name(shader, processor));
>  
>               if (shader->prolog)
>                       si_shader_dump_disassembly(&shader->prolog->binary,
>                                                  debug, "prolog", file);
>  
>               si_shader_dump_disassembly(&shader->binary, debug, "main", 
> file);
>  
>               if (shader->epilog)
>                       si_shader_dump_disassembly(&shader->epilog->binary,
>                                                  debug, "epilog", file);
>               fprintf(file, "\n");
>       }
>  
> -     si_shader_dump_stats(sscreen, shader, debug, processor, file);
> +     si_shader_dump_stats(sscreen, shader, debug, processor, file,
> +                          check_debug_option);
>  }
>  
>  int si_compile_llvm(struct si_screen *sscreen,
>                   struct radeon_shader_binary *binary,
>                   struct si_shader_config *conf,
>                   LLVMTargetMachineRef tm,
>                   LLVMModuleRef mod,
>                   struct pipe_debug_callback *debug,
>                   unsigned processor,
>                   const char *name)
> @@ -6546,21 +6548,21 @@ si_generate_gs_copy_shader(struct si_screen *sscreen,
>  
>       r = si_compile_llvm(sscreen, &ctx.shader->binary,
>                           &ctx.shader->config, ctx.tm,
>                           bld_base->base.gallivm->module,
>                           debug, PIPE_SHADER_GEOMETRY,
>                           "GS Copy Shader");
>       if (!r) {
>               if (r600_can_dump_shader(&sscreen->b, PIPE_SHADER_GEOMETRY))
>                       fprintf(stderr, "GS Copy Shader:\n");
>               si_shader_dump(sscreen, ctx.shader, debug,
> -                            PIPE_SHADER_GEOMETRY, stderr);
> +                            PIPE_SHADER_GEOMETRY, stderr, true);
>               r = si_shader_binary_upload(sscreen, ctx.shader);
>       }
>  
>       si_llvm_dispose(&ctx);
>  
>       FREE(outputs);
>  
>       if (r != 0) {
>               FREE(shader);
>               shader = NULL;
> @@ -8604,21 +8606,21 @@ int si_shader_create(struct si_screen *sscreen, 
> LLVMTargetMachineRef tm,
>               if (shader->epilog) {
>                       shader->config.num_sgprs = 
> MAX2(shader->config.num_sgprs,
>                                                       
> shader->epilog->config.num_sgprs);
>                       shader->config.num_vgprs = 
> MAX2(shader->config.num_vgprs,
>                                                       
> shader->epilog->config.num_vgprs);
>               }
>       }
>  
>       si_fix_resource_usage(sscreen, shader);
>       si_shader_dump(sscreen, shader, debug, sel->info.processor,
> -                    stderr);
> +                    stderr, true);
>  
>       /* Upload. */
>       r = si_shader_binary_upload(sscreen, shader);
>       if (r) {
>               fprintf(stderr, "LLVM failed to upload shader\n");
>               return r;
>       }
>  
>       return 0;
>  }
> diff --git a/src/gallium/drivers/radeonsi/si_shader.h 
> b/src/gallium/drivers/radeonsi/si_shader.h
> index 129e571..1b5dec2 100644
> --- a/src/gallium/drivers/radeonsi/si_shader.h
> +++ b/src/gallium/drivers/radeonsi/si_shader.h
> @@ -539,21 +539,21 @@ int si_compile_llvm(struct si_screen *sscreen,
>                   LLVMModuleRef mod,
>                   struct pipe_debug_callback *debug,
>                   unsigned processor,
>                   const char *name);
>  void si_shader_destroy(struct si_shader *shader);
>  unsigned si_shader_io_get_unique_index(unsigned semantic_name, unsigned 
> index);
>  unsigned si_shader_io_get_unique_index2(unsigned name, unsigned index);
>  int si_shader_binary_upload(struct si_screen *sscreen, struct si_shader 
> *shader);
>  void si_shader_dump(struct si_screen *sscreen, struct si_shader *shader,
>                   struct pipe_debug_callback *debug, unsigned processor,
> -                 FILE *f);
> +                 FILE *f, bool check_debug_option);
>  void si_multiwave_lds_size_workaround(struct si_screen *sscreen,
>                                     unsigned *lds_size);
>  void si_shader_apply_scratch_relocs(struct si_context *sctx,
>                       struct si_shader *shader,
>                       struct si_shader_config *config,
>                       uint64_t scratch_va);
>  void si_shader_binary_read_config(struct radeon_shader_binary *binary,
>                                 struct si_shader_config *conf,
>                                 unsigned symbol_offset);
>  unsigned si_get_spi_shader_z_format(bool writes_z, bool writes_stencil,
> diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
> b/src/gallium/drivers/radeonsi/si_state_shaders.c
> index a360672..9967837 100644
> --- a/src/gallium/drivers/radeonsi/si_state_shaders.c
> +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
> @@ -1103,21 +1103,21 @@ static void si_build_shader_variant(void *job, int 
> thread_index)
>               R600_ERR("Failed to build shader variant (type=%u) %d\n",
>                        sel->type, r);
>               shader->compilation_failed = true;
>               return;
>       }
>  
>       if (sel->is_debug_context) {
>               FILE *f = open_memstream(&shader->shader_log,
>                                        &shader->shader_log_size);
>               if (f) {
> -                     si_shader_dump(sscreen, shader, NULL, sel->type, f);
> +                     si_shader_dump(sscreen, shader, NULL, sel->type, f, 
> false);
>                       fclose(f);
>               }
>       }
>  
>       si_shader_init_pm4_state(sscreen, shader);
>  }
>  
>  /* Select the hw shader variant depending on the current state. */
>  static int si_shader_select_with_key(struct si_screen *sscreen,
>                                    struct si_shader_ctx_state *state,
> 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to