diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-03-10 19:15:32 -0800 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-05-27 15:18:11 -0700 |
commit | fb2a5ceb3264123e94a5e3f4d92cf6ec605e76e8 (patch) | |
tree | d392b6dd9058588b9af10359c038a2b3190a7a3d | |
parent | 3a83c176eab8c513eb723554a240af1a7308d701 (diff) | |
download | external_mesa3d-fb2a5ceb3264123e94a5e3f4d92cf6ec605e76e8.zip external_mesa3d-fb2a5ceb3264123e94a5e3f4d92cf6ec605e76e8.tar.gz external_mesa3d-fb2a5ceb3264123e94a5e3f4d92cf6ec605e76e8.tar.bz2 |
anv: Emit DRAWING_RECTANGLE once at driver initialization
Also, we don't actually need it for clipping because meta always colors
inside the lines and, for all other operations, the user is required to set
a scissor. Since DRAWING_RECTANGLE stalls the GPU, we want to emit it as
little as possible.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
-rw-r--r-- | src/intel/vulkan/genX_cmd_buffer.c | 13 | ||||
-rw-r--r-- | src/intel/vulkan/genX_state.c | 9 |
2 files changed, 9 insertions, 13 deletions
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 64172ca..e7d322c 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1128,19 +1128,6 @@ void genX(CmdBeginRenderPass)( genX(flush_pipeline_select_3d)(cmd_buffer); - const VkRect2D *render_area = &pRenderPassBegin->renderArea; - - anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_DRAWING_RECTANGLE), r) { - r.ClippedDrawingRectangleYMin = MAX2(render_area->offset.y, 0); - r.ClippedDrawingRectangleXMin = MAX2(render_area->offset.x, 0); - r.ClippedDrawingRectangleYMax = - render_area->offset.y + render_area->extent.height - 1; - r.ClippedDrawingRectangleXMax = - render_area->offset.x + render_area->extent.width - 1; - r.DrawingRectangleOriginY = 0; - r.DrawingRectangleOriginX = 0; - } - genX(cmd_buffer_set_subpass)(cmd_buffer, pass->subpasses); anv_cmd_buffer_clear_subpass(cmd_buffer); } diff --git a/src/intel/vulkan/genX_state.c b/src/intel/vulkan/genX_state.c index a53555c..f67b0a7 100644 --- a/src/intel/vulkan/genX_state.c +++ b/src/intel/vulkan/genX_state.c @@ -61,6 +61,15 @@ genX(init_device_state)(struct anv_device *device) anv_batch_emit(&batch, GENX(3DSTATE_STREAMOUT), so); anv_batch_emit(&batch, GENX(3DSTATE_AA_LINE_PARAMETERS), aa); + anv_batch_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; + } + #if GEN_GEN >= 8 anv_batch_emit(&batch, GENX(3DSTATE_WM_CHROMAKEY), ck); |