On Jul 13, 2016 1:34 AM, "Topi Pohjolainen" <[email protected]> wrote: > > Setup for pixel shader push constants is the same as for other > stages. Note that on gen8+ the if-else branches were identical > and the generation check for packet size redundant.
It tripped me up a bit that you didn't have a generation check for packet size in the gen7 version that's now getting used on gen7-9. However, the extra dwords just turn into noops anyway so it's OK. > Signed-off-by: Topi Pohjolainen <[email protected]> > --- > src/mesa/drivers/dri/i965/gen7_blorp.c | 27 ++++-------------- > src/mesa/drivers/dri/i965/gen8_blorp.c | 50 ++++------------------------------ > 2 files changed, 12 insertions(+), 65 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.c b/src/mesa/drivers/dri/i965/gen7_blorp.c > index abdc4be..72ab082 100644 > --- a/src/mesa/drivers/dri/i965/gen7_blorp.c > +++ b/src/mesa/drivers/dri/i965/gen7_blorp.c > @@ -233,7 +233,7 @@ gen7_blorp_emit_surface_state(struct brw_context *brw, > * buffer are valid. > */ > static void > -gen7_blorp_emit_disable_constant_state(struct brw_context *brw, > +gen7_blorp_disable_constant_state(struct brw_context *brw, > unsigned opcode) > { > BEGIN_BATCH(7); > @@ -570,20 +570,6 @@ gen7_blorp_emit_sampler_state_pointers_ps(struct brw_context *brw, > ADVANCE_BATCH(); > } > > -void > -gen7_blorp_emit_constant_ps_disable(struct brw_context *brw) > -{ > - BEGIN_BATCH(7); > - OUT_BATCH(_3DSTATE_CONSTANT_PS << 16 | (7 - 2)); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - ADVANCE_BATCH(); > -} > - > static void > gen7_blorp_emit_depth_stencil_config(struct brw_context *brw, > const struct brw_blorp_params *params) > @@ -779,10 +765,11 @@ gen7_blorp_exec(struct brw_context *brw, > gen7_blorp_emit_cc_state_pointer(brw, cc_state_offset); > } > > - gen7_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_VS); > - gen7_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_HS); > - gen7_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_DS); > - gen7_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_GS); > + gen7_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_VS); > + gen7_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_HS); > + gen7_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_DS); > + gen7_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_GS); > + gen7_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_PS); > > depthstencil_offset = gen6_blorp_emit_depth_stencil_state(brw, params); > gen7_blorp_emit_depth_stencil_state_pointers(brw, depthstencil_offset); > @@ -821,8 +808,6 @@ gen7_blorp_exec(struct brw_context *brw, > if (params->wm_prog_data) > gen7_blorp_emit_binding_table_pointers_ps(brw, wm_bind_bo_offset); > > - gen7_blorp_emit_constant_ps_disable(brw); > - > if (params->src.mt) { > const uint32_t sampler_offset = > gen6_blorp_emit_sampler_state(brw, BRW_MAPFILTER_LINEAR, 0, true); > diff --git a/src/mesa/drivers/dri/i965/gen8_blorp.c b/src/mesa/drivers/dri/i965/gen8_blorp.c > index 21fcd9e..f68aba5 100644 > --- a/src/mesa/drivers/dri/i965/gen8_blorp.c > +++ b/src/mesa/drivers/dri/i965/gen8_blorp.c > @@ -161,7 +161,7 @@ gen8_blorp_emit_blend_state(struct brw_context *brw, > * buffer are valid. > */ > static void > -gen8_blorp_emit_disable_constant_state(struct brw_context *brw, > +gen8_blorp_disable_constant_state(struct brw_context *brw, > unsigned opcode) > { > BEGIN_BATCH(11); > @@ -566,44 +566,6 @@ gen8_blorp_emit_depth_stencil_state(struct brw_context *brw, > ADVANCE_BATCH(); > } > > -static void > -gen8_blorp_emit_disable_constant_ps(struct brw_context *brw) > -{ > - const int dwords = brw->gen >= 8 ? 11 : 7; > - BEGIN_BATCH(dwords); > - OUT_BATCH(_3DSTATE_CONSTANT_PS << 16 | (dwords - 2)); > - > - if (brw->gen >= 9) { > - OUT_BATCH(0); > - OUT_BATCH(0); > - } else { > - OUT_BATCH(0); > - OUT_BATCH(0); > - } > - > - if (brw->gen >= 9) { > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - } else { > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - OUT_BATCH(0); > - } > - > - ADVANCE_BATCH(); > -} > - > static uint32_t > gen8_blorp_emit_surface_states(struct brw_context *brw, > const struct brw_blorp_params *params) > @@ -680,12 +642,12 @@ gen8_blorp_exec(struct brw_context *brw, const struct brw_blorp_params *params) > const uint32_t cc_state_offset = gen6_blorp_emit_cc_state(brw); > gen7_blorp_emit_cc_state_pointer(brw, cc_state_offset); > > - gen8_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_VS); > - gen8_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_HS); > - gen8_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_DS); > - gen8_blorp_emit_disable_constant_state(brw, _3DSTATE_CONSTANT_GS); > + gen8_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_VS); > + gen8_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_HS); > + gen8_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_DS); > + gen8_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_GS); > + gen8_blorp_disable_constant_state(brw, _3DSTATE_CONSTANT_PS); > > - gen8_blorp_emit_disable_constant_ps(brw); > wm_bind_bo_offset = gen8_blorp_emit_surface_states(brw, params); > > gen7_blorp_emit_binding_table_pointers_ps(brw, wm_bind_bo_offset); > -- > 2.5.5 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
