Ignore this. It's just an accidental re-send.
On Sat, Oct 10, 2015 at 8:04 AM, Jason Ekstrand <ja...@jlekstrand.net> wrote: > This commit removes all dependence on GL state by getting rid of the > brw_context parameter and the GL data structures. > --- > src/mesa/drivers/dri/i965/brw_fs.cpp | 59 > ++++++++++++++++-------------------- > src/mesa/drivers/dri/i965/brw_wm.c | 14 +++++++-- > src/mesa/drivers/dri/i965/brw_wm.h | 13 +++++--- > 3 files changed, 47 insertions(+), 39 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > b/src/mesa/drivers/dri/i965/brw_fs.cpp > index 3c83f2a..8bdc676 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > @@ -5115,40 +5115,39 @@ fs_visitor::run_cs() > } > > const unsigned * > -brw_wm_fs_emit(struct brw_context *brw, > +brw_wm_fs_emit(const struct brw_compiler *compiler, void *log_data, > void *mem_ctx, > const struct brw_wm_prog_key *key, > struct brw_wm_prog_data *prog_data, > - struct gl_fragment_program *fp, > - struct gl_shader_program *prog, > + const nir_shader *shader, > + struct gl_program *prog, > int shader_time_index8, int shader_time_index16, > - unsigned *final_assembly_size) > + bool use_rep_send, > + unsigned *final_assembly_size, > + char **error_str) > { > - /* Now the main event: Visit the shader IR and generate our FS IR for it. > - */ > - fs_visitor v(brw->intelScreen->compiler, brw, mem_ctx, key, > - &prog_data->base, &fp->Base, fp->Base.nir, 8, > shader_time_index8); > + fs_visitor v(compiler, log_data, mem_ctx, key, > + &prog_data->base, prog, shader, 8, > + shader_time_index8); > if (!v.run_fs(false /* do_rep_send */)) { > - if (prog) { > - prog->LinkStatus = false; > - ralloc_strcat(&prog->InfoLog, v.fail_msg); > - } > - > - _mesa_problem(NULL, "Failed to compile fragment shader: %s\n", > - v.fail_msg); > + if (error_str) > + *error_str = ralloc_strdup(mem_ctx, v.fail_msg); > > return NULL; > } > > cfg_t *simd16_cfg = NULL; > - fs_visitor v2(brw->intelScreen->compiler, brw, mem_ctx, key, > - &prog_data->base, &fp->Base, fp->Base.nir, 16, > shader_time_index16); > - if (likely(!(INTEL_DEBUG & DEBUG_NO16) || brw->use_rep_send)) { > + fs_visitor v2(compiler, log_data, mem_ctx, key, > + &prog_data->base, prog, shader, 16, > + shader_time_index16); > + if (likely(!(INTEL_DEBUG & DEBUG_NO16) || use_rep_send)) { > if (!v.simd16_unsupported) { > /* Try a SIMD16 compile */ > v2.import_uniforms(&v); > - if (!v2.run_fs(brw->use_rep_send)) { > - perf_debug("SIMD16 shader failed to compile: %s", v2.fail_msg); > + if (!v2.run_fs(use_rep_send)) { > + compiler->shader_perf_log(log_data, > + "SIMD16 shader failed to compile: %s", > + v2.fail_msg); > } else { > simd16_cfg = v2.cfg; > } > @@ -5156,8 +5155,8 @@ brw_wm_fs_emit(struct brw_context *brw, > } > > cfg_t *simd8_cfg; > - int no_simd8 = (INTEL_DEBUG & DEBUG_NO8) || brw->no_simd8; > - if ((no_simd8 || brw->gen < 5) && simd16_cfg) { > + int no_simd8 = (INTEL_DEBUG & DEBUG_NO8) || use_rep_send; > + if ((no_simd8 || compiler->devinfo->gen < 5) && simd16_cfg) { > simd8_cfg = NULL; > prog_data->no_8 = true; > } else { > @@ -5165,20 +5164,14 @@ brw_wm_fs_emit(struct brw_context *brw, > prog_data->no_8 = false; > } > > - fs_generator g(brw->intelScreen->compiler, brw, > - mem_ctx, (void *) key, &prog_data->base, > + fs_generator g(compiler, log_data, mem_ctx, (void *) key, > &prog_data->base, > v.promoted_constants, v.runtime_check_aads_emit, "FS"); > > if (unlikely(INTEL_DEBUG & DEBUG_WM)) { > - char *name; > - if (prog) > - name = ralloc_asprintf(mem_ctx, "%s fragment shader %d", > - prog->Label ? prog->Label : "unnamed", > - prog->Name); > - else > - name = ralloc_asprintf(mem_ctx, "fragment program %d", fp->Base.Id); > - > - g.enable_debug(name); > + g.enable_debug(ralloc_asprintf(mem_ctx, "%s fragment shader %s", > + shader->info.label ? shader->info.label > : > + "unnamed", > + shader->info.name)); > } > > if (simd8_cfg) > diff --git a/src/mesa/drivers/dri/i965/brw_wm.c > b/src/mesa/drivers/dri/i965/brw_wm.c > index 4d5e7f6..ab9461a 100644 > --- a/src/mesa/drivers/dri/i965/brw_wm.c > +++ b/src/mesa/drivers/dri/i965/brw_wm.c > @@ -230,9 +230,19 @@ brw_codegen_wm_prog(struct brw_context *brw, > st_index16 = brw_get_shader_time_index(brw, prog, &fp->program.Base, > ST_FS16); > } > > - program = brw_wm_fs_emit(brw, mem_ctx, key, &prog_data, > - &fp->program, prog, st_index8, st_index16, > &program_size); > + char *error_str = NULL; > + program = brw_wm_fs_emit(brw->intelScreen->compiler, brw, mem_ctx, > + key, &prog_data, fp->program.Base.nir, > + &fp->program.Base, st_index8, st_index16, > + brw->use_rep_send, &program_size, &error_str); > if (program == NULL) { > + if (prog) { > + prog->LinkStatus = false; > + ralloc_strcat(&prog->InfoLog, error_str); > + } > + > + _mesa_problem(NULL, "Failed to compile fragment shader: %s\n", > error_str); > + > ralloc_free(mem_ctx); > return false; > } > diff --git a/src/mesa/drivers/dri/i965/brw_wm.h > b/src/mesa/drivers/dri/i965/brw_wm.h > index 6ee22b2..ac22bee 100644 > --- a/src/mesa/drivers/dri/i965/brw_wm.h > +++ b/src/mesa/drivers/dri/i965/brw_wm.h > @@ -61,20 +61,25 @@ > extern "C" { > #endif > > +struct nir_shader; > + > /** > * Compile a fragment shader. > * > * Returns the final assembly and the program's size. > */ > -const unsigned *brw_wm_fs_emit(struct brw_context *brw, > +const unsigned *brw_wm_fs_emit(const struct brw_compiler *compiler, > + void *log_data, > void *mem_ctx, > const struct brw_wm_prog_key *key, > struct brw_wm_prog_data *prog_data, > - struct gl_fragment_program *fp, > - struct gl_shader_program *prog, > + const struct nir_shader *shader, > + struct gl_program *prog, > int shader_time_index8, > int shader_time_index16, > - unsigned *final_assembly_size); > + bool use_rep_send, > + unsigned *final_assembly_size, > + char **error_str); > > GLboolean brw_link_shader(struct gl_context *ctx, struct gl_shader_program > *prog); > struct gl_shader *brw_new_shader(struct gl_context *ctx, GLuint name, GLuint > type); > -- > 2.5.0.400.gff86faf > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev