Mesa (master): intel/blorp: Stop setting 3DSTATE_DRAWING_RECTANGLE

Jason Ekstrand jekstrand at kemper.freedesktop.org
Thu Sep 15 00:52:03 UTC 2016


Module: Mesa
Branch: master
Commit: a814e18c96ccc70473103cf08a675265f0d1b3c9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a814e18c96ccc70473103cf08a675265f0d1b3c9

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Mon Sep 12 15:50:05 2016 -0700

intel/blorp: Stop setting 3DSTATE_DRAWING_RECTANGLE

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 at jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 src/intel/blorp/blorp_genX_exec.h           |  5 -----
 src/intel/vulkan/genX_blorp_exec.c          | 15 ---------------
 src/mesa/drivers/dri/i965/genX_blorp_exec.c |  5 +++++
 3 files changed, 5 insertions(+), 20 deletions(-)

diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h
index aff59e1..eb4a5b9 100644
--- a/src/intel/blorp/blorp_genX_exec.h
+++ b/src/intel/blorp/blorp_genX_exec.h
@@ -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;
diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c
index a3ad97a..5ddbb7d 100644
--- a/src/intel/vulkan/genX_blorp_exec.c
+++ b/src/intel/vulkan/genX_blorp_exec.c
@@ -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;
diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c
index 8cd5a62..edcd896 100644
--- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c
+++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c
@@ -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




More information about the mesa-commit mailing list