Re: [Mesa-dev] [PATCH v03 34/38] i965: Port push constant code to genxml.
On Monday, May 1, 2017 6:43:22 PM PDT Rafael Antognolli wrote: > The following states are ported on this patch: >- gen6_gs_push_constants >- gen6_vs_push_constants >- gen6_wm_push_constants >- gen7_tes_push_constants > > v2: >- Use helper to setup brw_address (Kristian) > v3: >- Do not use macro for upload_constant_state (Ken) >- Do not re-declare MOCS macro (Ken) > > Signed-off-by: Rafael Antognolli> --- > src/mesa/drivers/dri/i965/Makefile.sources| 4 +- > src/mesa/drivers/dri/i965/brw_state.h | 5 +- > src/mesa/drivers/dri/i965/gen6_gs_state.c | 33 +--- > src/mesa/drivers/dri/i965/gen6_vs_state.c | 70 +-- > src/mesa/drivers/dri/i965/gen6_wm_state.c | 70 +-- > src/mesa/drivers/dri/i965/gen7_ds_state.c | 57 +- > src/mesa/drivers/dri/i965/gen7_hs_state.c | 60 +- > src/mesa/drivers/dri/i965/genX_state_upload.c | 240 +-- > 8 files changed, 227 insertions(+), 312 deletions(-) > delete mode 100644 src/mesa/drivers/dri/i965/gen6_vs_state.c > delete mode 100644 src/mesa/drivers/dri/i965/gen6_wm_state.c > delete mode 100644 src/mesa/drivers/dri/i965/gen7_ds_state.c > delete mode 100644 src/mesa/drivers/dri/i965/gen7_hs_state.c Shouldn't gen7_upload_constant_state() in gen6_constant_state.c get deleted in this patch? > @@ -1752,6 +1764,145 @@ static const struct brw_tracked_state > genX(scissor_state) = { > .emit = genX(upload_scissor_state), > }; > > +#if GEN_GEN >= 7 > +UNUSED static const uint32_t push_constant_opcodes[] = { > + [MESA_SHADER_VERTEX] = 21, > + [MESA_SHADER_TESS_CTRL] = 25, /* HS */ > + [MESA_SHADER_TESS_EVAL] = 26, /* DS */ > + [MESA_SHADER_GEOMETRY]= 22, > + [MESA_SHADER_FRAGMENT]= 23, > + [MESA_SHADER_COMPUTE] = 0, > +}; > + > +static void > +upload_constant_state(struct brw_context *brw, > + struct brw_stage_state *stage_state, > + bool active, uint32_t stage) > +{ > + UNUSED uint32_t mocs = GEN_GEN < 8 ? GEN7_MOCS_L3 : 0; > + active = active && stage_state->push_const_size != 0; > + > + brw_batch_emit(brw, GENX(3DSTATE_CONSTANT_VS), pkt) { > + pkt._3DCommandSubOpcode = push_constant_opcodes[stage]; > + if (active) { > +#if GEN_GEN >= 9 > + pkt.ConstantBody.ConstantBuffer2ReadLength = > +stage_state->push_const_size; > + pkt.ConstantBody.PointerToConstantBuffer2 = > +render_ro_bo( > + brw->batch.bo, stage_state->push_const_offset); I don't think you need to line-wrap this. > +#else > + pkt.ConstantBody.ConstantBuffer0ReadLength = > +stage_state->push_const_size; > + pkt.ConstantBody.PointerToConstantBuffer0.offset = > +stage_state->push_const_offset | mocs; > +#endif > + } > + } > + > + brw->ctx.NewDriverState |= GEN_GEN >= 9 ? BRW_NEW_SURFACES : 0; > +} > +#endif > + > +static void > +genX(upload_vs_push_constants)(struct brw_context *brw) > +{ > + struct brw_stage_state *stage_state = >vs.base; > + > + /* _BRW_NEW_VERTEX_PROGRAM */ > + const struct brw_program *vp = brw_program_const(brw->vertex_program); > + /* BRW_NEW_VS_PROG_DATA */ > + const struct brw_stage_prog_data *prog_data = brw->vs.base.prog_data; > + > + _mesa_shader_write_subroutine_indices(>ctx, MESA_SHADER_VERTEX); > + gen6_upload_push_constants(brw, >program, prog_data, stage_state); > + > +#if GEN_GEN >= 7 > + if (brw->gen == 7 && !brw->is_haswell && !brw->is_baytrail) if (GEN_GEN == 7 && !GEN_IS_HASWELL && !brw->is_baytrail) > + gen7_emit_vs_workaround_flush(brw); > + > + upload_constant_state(brw, stage_state, true /* active */, > + MESA_SHADER_VERTEX); > +#endif > +} With the old code deleted, Reviewed-by: Kenneth Graunke signature.asc Description: This is a digitally signed message part. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH v03 34/38] i965: Port push constant code to genxml.
The following states are ported on this patch: - gen6_gs_push_constants - gen6_vs_push_constants - gen6_wm_push_constants - gen7_tes_push_constants v2: - Use helper to setup brw_address (Kristian) v3: - Do not use macro for upload_constant_state (Ken) - Do not re-declare MOCS macro (Ken) Signed-off-by: Rafael Antognolli--- src/mesa/drivers/dri/i965/Makefile.sources| 4 +- src/mesa/drivers/dri/i965/brw_state.h | 5 +- src/mesa/drivers/dri/i965/gen6_gs_state.c | 33 +--- src/mesa/drivers/dri/i965/gen6_vs_state.c | 70 +-- src/mesa/drivers/dri/i965/gen6_wm_state.c | 70 +-- src/mesa/drivers/dri/i965/gen7_ds_state.c | 57 +- src/mesa/drivers/dri/i965/gen7_hs_state.c | 60 +- src/mesa/drivers/dri/i965/genX_state_upload.c | 240 +-- 8 files changed, 227 insertions(+), 312 deletions(-) delete mode 100644 src/mesa/drivers/dri/i965/gen6_vs_state.c delete mode 100644 src/mesa/drivers/dri/i965/gen6_wm_state.c delete mode 100644 src/mesa/drivers/dri/i965/gen7_ds_state.c delete mode 100644 src/mesa/drivers/dri/i965/gen7_hs_state.c diff --git a/src/mesa/drivers/dri/i965/Makefile.sources b/src/mesa/drivers/dri/i965/Makefile.sources index a63d576..34162bd 100644 --- a/src/mesa/drivers/dri/i965/Makefile.sources +++ b/src/mesa/drivers/dri/i965/Makefile.sources @@ -87,11 +87,7 @@ i965_FILES = \ gen6_sol.c \ gen6_urb.c \ gen6_viewport_state.c \ - gen6_vs_state.c \ - gen6_wm_state.c \ gen7_cs_state.c \ - gen7_ds_state.c \ - gen7_hs_state.c \ gen7_l3_state.c \ gen7_misc_state.c \ gen7_sol_state.c \ diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h index 6adcf46..084f97f 100644 --- a/src/mesa/drivers/dri/i965/brw_state.h +++ b/src/mesa/drivers/dri/i965/brw_state.h @@ -109,7 +109,6 @@ extern const struct brw_tracked_state brw_cs_state; extern const struct brw_tracked_state gen7_cs_push_constants; extern const struct brw_tracked_state gen6_binding_table_pointers; extern const struct brw_tracked_state gen6_color_calc_state; -extern const struct brw_tracked_state gen6_gs_push_constants; extern const struct brw_tracked_state gen6_gs_binding_table; extern const struct brw_tracked_state gen6_multisample_state; extern const struct brw_tracked_state gen6_renderbuffer_surfaces; @@ -118,13 +117,9 @@ extern const struct brw_tracked_state gen6_sol_surface; extern const struct brw_tracked_state gen6_sf_vp; extern const struct brw_tracked_state gen6_urb; extern const struct brw_tracked_state gen6_viewport_state; -extern const struct brw_tracked_state gen6_vs_push_constants; -extern const struct brw_tracked_state gen6_wm_push_constants; extern const struct brw_tracked_state gen7_depthbuffer; -extern const struct brw_tracked_state gen7_tcs_push_constants; extern const struct brw_tracked_state gen7_l3_state; extern const struct brw_tracked_state gen7_push_constant_space; -extern const struct brw_tracked_state gen7_tes_push_constants; extern const struct brw_tracked_state gen7_urb; extern const struct brw_tracked_state haswell_cut_index; extern const struct brw_tracked_state gen8_index_buffer; diff --git a/src/mesa/drivers/dri/i965/gen6_gs_state.c b/src/mesa/drivers/dri/i965/gen6_gs_state.c index 6a9e951..6450c76 100644 --- a/src/mesa/drivers/dri/i965/gen6_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_gs_state.c @@ -31,39 +31,6 @@ #include "intel_batchbuffer.h" #include "main/shaderapi.h" -static void -gen6_upload_gs_push_constants(struct brw_context *brw) -{ - struct brw_stage_state *stage_state = >gs.base; - - /* BRW_NEW_GEOMETRY_PROGRAM */ - const struct brw_program *gp = brw_program_const(brw->geometry_program); - - if (gp) { - /* BRW_NEW_GS_PROG_DATA */ - struct brw_stage_prog_data *prog_data = brw->gs.base.prog_data; - - _mesa_shader_write_subroutine_indices(>ctx, MESA_SHADER_GEOMETRY); - gen6_upload_push_constants(brw, >program, prog_data, stage_state); - } - - if (brw->gen >= 7) - gen7_upload_constant_state(brw, stage_state, gp, _3DSTATE_CONSTANT_GS); -} - -const struct brw_tracked_state gen6_gs_push_constants = { - .dirty = { - .mesa = _NEW_PROGRAM_CONSTANTS | - _NEW_TRANSFORM, - .brw = BRW_NEW_BATCH | - BRW_NEW_BLORP | - BRW_NEW_GEOMETRY_PROGRAM | - BRW_NEW_GS_PROG_DATA | - BRW_NEW_PUSH_CONSTANT_ALLOCATION, - }, - .emit = gen6_upload_gs_push_constants, -}; - void upload_gs_state_for_tf(struct brw_context *brw) { diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c deleted file mode 100644 index b2d2306..000 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright © 2009 Intel Corporation - * - * Permission is hereby granted, free of charge, to any