summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-09-12 15:50:05 -0700
committerJason Ekstrand <[email protected]>2016-09-14 17:51:16 -0700
commita814e18c96ccc70473103cf08a675265f0d1b3c9 (patch)
tree33e031db4fab6f725803a105636f7d779771fc83
parentb56f509ee0d6fcf85eb01aecfdcc66fb784fee97 (diff)
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 <[email protected]> Reviewed-by: Anuj Phogat <[email protected]>
-rw-r--r--src/intel/blorp/blorp_genX_exec.h5
-rw-r--r--src/intel/vulkan/genX_blorp_exec.c15
-rw-r--r--src/mesa/drivers/dri/i965/genX_blorp_exec.c5
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 aff59e1b9b8..eb4a5b9f05a 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 a3ad97ad9de..5ddbb7d0879 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 8cd5a62bf09..edcd8964098 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