On Friday, April 24, 2015 04:33:05 PM Jordan Justen wrote: > v2: > * Clean out some unneeded code copied from run_fs (krh) > * Always use NIR > * Split shader time out into a separate commit > > Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> > --- > src/mesa/drivers/dri/i965/brw_context.c | 2 + > src/mesa/drivers/dri/i965/brw_fs.cpp | 61 > ++++++++++++++++++++++++++-- > src/mesa/drivers/dri/i965/brw_fs.h | 10 +++++ > src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 23 +++++++++++ > 4 files changed, 93 insertions(+), 3 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.c > b/src/mesa/drivers/dri/i965/brw_context.c > index 9d90360..25b50c7 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.c > +++ b/src/mesa/drivers/dri/i965/brw_context.c > @@ -594,6 +594,8 @@ brw_initialize_context_constants(struct brw_context *brw) > if (brw_env_var_as_boolean("INTEL_USE_NIR", true)) > ctx->Const.ShaderCompilerOptions[MESA_SHADER_FRAGMENT].NirOptions = > &nir_options; > > + ctx->Const.ShaderCompilerOptions[MESA_SHADER_COMPUTE].NirOptions = > &nir_options; > + > /* ARB_viewport_array */ > if (brw->gen >= 7 && ctx->API == API_OPENGL_CORE) { > ctx->Const.MaxViewports = GEN7_NUM_VIEWPORTS; > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > b/src/mesa/drivers/dri/i965/brw_fs.cpp > index 61ee056..24d3fa9 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > @@ -1719,9 +1719,15 @@ fs_visitor::assign_curb_setup() > if (dispatch_width == 8) { > prog_data->dispatch_grf_start_reg = payload.num_regs; > } else { > - assert(stage == MESA_SHADER_FRAGMENT); > - brw_wm_prog_data *prog_data = (brw_wm_prog_data*) this->prog_data; > - prog_data->dispatch_grf_start_reg_16 = payload.num_regs; > + if (stage == MESA_SHADER_FRAGMENT) { > + brw_wm_prog_data *prog_data = (brw_wm_prog_data*) this->prog_data; > + prog_data->dispatch_grf_start_reg_16 = payload.num_regs; > + } else if (stage == MESA_SHADER_COMPUTE) { > + brw_cs_prog_data *prog_data = (brw_cs_prog_data*) this->prog_data; > + prog_data->dispatch_grf_start_reg_16 = payload.num_regs; > + } else { > + unreachable("Unsupported shader type!"); > + } > }
We should be able to eliminate brw_cs_prog_data::dispatch_grf_start_reg_16 and just use brw_stage_prog_data::dispatch_grf_start_reg (since compute shaders only use one SIMD mode). I think you want to simplify this hunk to: if (stage != MESA_SHADER_FRAGMENT || dispatch_width == 8) { prog_data->dispatch_grf_start_reg = payload.num_regs; } else { brw_wm_prog_data *prog_data = (brw_wm_prog_data*) this->prog_data; prog_data->dispatch_grf_start_reg_16 = payload.num_regs; } > > prog_data->curb_read_length = ALIGN(stage_prog_data->nr_params, 8) / 8; > @@ -3726,6 +3732,14 @@ fs_visitor::setup_vs_payload() > } > > void > +fs_visitor::setup_cs_payload() > +{ > + assert(brw->gen >= 7); > + > + payload.num_regs = 1; > +} Are you planning to add more code here? Not sure if it's worth a helper function. It's probably fine though :) > + > +void > fs_visitor::assign_binding_table_offsets() > { > assert(stage == MESA_SHADER_FRAGMENT); > @@ -4065,6 +4079,47 @@ fs_visitor::run_fs() > return !failed; > } > > +bool > +fs_visitor::run_cs() > +{ > + assert(stage == MESA_SHADER_COMPUTE); > + assert (shader); ^^^ bonus space Patches 1-13 are: Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev