[Mesa-dev] [PATCH 18/32] i965/blorp/gen6: Move constant disables higher up

Jason Ekstrand jason at jlekstrand.net
Thu Aug 11 21:15:15 UTC 2016


This is what gen7-8 do and it's a bit cleaner.
---
 src/mesa/drivers/dri/i965/gen6_blorp.c | 29 +++++++----------------------
 1 file changed, 7 insertions(+), 22 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.c b/src/mesa/drivers/dri/i965/gen6_blorp.c
index d27c550..3fa8090 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.c
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.c
@@ -124,15 +124,6 @@ gen6_blorp_emit_vs_disable(struct brw_context *brw,
     * We've already done one at the start of the BLORP operation.
     */
 
-   /* Disable the push constant buffers. */
-   BEGIN_BATCH(5);
-   OUT_BATCH(_3DSTATE_CONSTANT_VS << 16 | (5 - 2));
-   OUT_BATCH(0);
-   OUT_BATCH(0);
-   OUT_BATCH(0);
-   OUT_BATCH(0);
-   ADVANCE_BATCH();
-
    BEGIN_BATCH(6);
    OUT_BATCH(_3DSTATE_VS << 16 | (6 - 2));
    OUT_BATCH(0);
@@ -152,15 +143,6 @@ static void
 gen6_blorp_emit_gs_disable(struct brw_context *brw,
                            const struct brw_blorp_params *params)
 {
-   /* Disable all the constant buffers. */
-   BEGIN_BATCH(5);
-   OUT_BATCH(_3DSTATE_CONSTANT_GS << 16 | (5 - 2));
-   OUT_BATCH(0);
-   OUT_BATCH(0);
-   OUT_BATCH(0);
-   OUT_BATCH(0);
-   ADVANCE_BATCH();
-
    BEGIN_BATCH(7);
    OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2));
    OUT_BATCH(0);
@@ -305,12 +287,11 @@ gen6_blorp_emit_wm_config(struct brw_context *brw,
 }
 
 static void
-gen6_blorp_emit_constant_ps_disable(struct brw_context *brw,
-                                    const struct brw_blorp_params *params)
+gen6_blorp_emit_constant_disable(struct brw_context *brw, unsigned opcode)
 {
    /* Disable the push constant buffers. */
    BEGIN_BATCH(5);
-   OUT_BATCH(_3DSTATE_CONSTANT_PS << 16 | (5 - 2));
+   OUT_BATCH(opcode << 16 | (5 - 2));
    OUT_BATCH(0);
    OUT_BATCH(0);
    OUT_BATCH(0);
@@ -547,6 +528,11 @@ gen6_blorp_exec(struct brw_context *brw,
    depthstencil_offset = gen6_blorp_emit_depth_stencil_state(brw, params);
    gen6_blorp_emit_cc_state_pointers(brw, params, cc_blend_state_offset,
                                      depthstencil_offset, cc_state_offset);
+
+   gen6_blorp_emit_constant_disable(brw, _3DSTATE_CONSTANT_VS);
+   gen6_blorp_emit_constant_disable(brw, _3DSTATE_CONSTANT_GS);
+   gen6_blorp_emit_constant_disable(brw, _3DSTATE_CONSTANT_PS);
+
    if (params->wm_prog_data) {
       uint32_t wm_surf_offset_renderbuffer;
       uint32_t wm_surf_offset_texture = 0;
@@ -575,7 +561,6 @@ gen6_blorp_exec(struct brw_context *brw,
    gen6_blorp_emit_gs_disable(brw, params);
    gen6_blorp_emit_clip_disable(brw);
    gen6_blorp_emit_sf_config(brw, params);
-   gen6_blorp_emit_constant_ps_disable(brw, params);
    gen6_blorp_emit_wm_config(brw, params);
    if (params->wm_prog_data)
       gen6_blorp_emit_binding_table_pointers(brw, wm_bind_bo_offset);
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list