intel/blorp: Stop setting 3DSTATE_DRAWING_RECTANGLE
authorJason Ekstrand <jason@jlekstrand.net>
Mon, 12 Sep 2016 22:50:05 +0000 (15:50 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 15 Sep 2016 00:51:16 +0000 (17:51 -0700)
The Vulkan driver sets 3DSTATE_DRAWING_RECTANGLE once to MAX_INT x MAX_INT
at the GPU initialization time and never sets it again.  The GL driver sets
it every time the framebuffer changes.  Originally, blorp set it to the
size of the drawing area but meant we had to set it back in the Vulkan
driver.  Instead, we can easily just do that in the GL driver's blorp_exec
implementation and not set it in blorp core.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/intel/blorp/blorp_genX_exec.h
src/intel/vulkan/genX_blorp_exec.c
src/mesa/drivers/dri/i965/genX_blorp_exec.c

index aff59e1b9b83f3fa4256ec672286606d8da2be87..eb4a5b9f05ad11b414556bb9afb425692e7c3f8f 100644 (file)
@@ -1216,11 +1216,6 @@ blorp_exec(struct blorp_batch *batch, const struct blorp_params *params)
       clear.DepthClearValue = params->depth.clear_color.u32[0];
    }
 
-   blorp_emit(batch, GENX(3DSTATE_DRAWING_RECTANGLE), rect) {
-      rect.ClippedDrawingRectangleXMax = MAX2(params->x1, params->x0) - 1;
-      rect.ClippedDrawingRectangleYMax = MAX2(params->y1, params->y0) - 1;
-   }
-
    blorp_emit(batch, GENX(3DPRIMITIVE), prim) {
       prim.VertexAccessType = SEQUENTIAL;
       prim.PrimitiveTopologyType = _3DPRIM_RECTLIST;
index a3ad97ad9de116a089f0a1cb83dde9ad56f05b68..5ddbb7d08795c1975dd42fe8bb1f654a9ea35faa 100644 (file)
@@ -203,21 +203,6 @@ genX(blorp_exec)(struct blorp_batch *batch,
 
    blorp_exec(batch, params);
 
-   /* BLORP sets DRAWING_RECTANGLE but we always want it set to the maximum.
-    * Since we set it once at driver init and never again, we have to set it
-    * back after invoking blorp.
-    *
-    * TODO: BLORP should assume a max drawing rectangle
-    */
-   blorp_emit(batch, GENX(3DSTATE_DRAWING_RECTANGLE), rect) {
-      rect.ClippedDrawingRectangleYMin = 0;
-      rect.ClippedDrawingRectangleXMin = 0;
-      rect.ClippedDrawingRectangleYMax = UINT16_MAX;
-      rect.ClippedDrawingRectangleXMax = UINT16_MAX;
-      rect.DrawingRectangleOriginY = 0;
-      rect.DrawingRectangleOriginX = 0;
-   }
-
    cmd_buffer->state.vb_dirty = ~0;
    cmd_buffer->state.dirty = ~0;
    cmd_buffer->state.push_constants_dirty = ~0;
index 8cd5a62bf092c190291e95b8846e5fed99bdd264..edcd89640980237802aabeb8d230eac8f96b66be 100644 (file)
@@ -206,6 +206,11 @@ retry:
 
    brw_emit_depth_stall_flushes(brw);
 
+   blorp_emit(batch, GENX(3DSTATE_DRAWING_RECTANGLE), rect) {
+      rect.ClippedDrawingRectangleXMax = MAX2(params->x1, params->x0) - 1;
+      rect.ClippedDrawingRectangleYMax = MAX2(params->y1, params->y0) - 1;
+   }
+
    blorp_exec(batch, params);
 
    /* Make sure we didn't wrap the batch unintentionally, and make sure we