From: Jason Ekstrand Date: Fri, 11 Mar 2016 03:15:32 +0000 (-0800) Subject: anv: Emit DRAWING_RECTANGLE once at driver initialization X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fb2a5ceb3264123e94a5e3f4d92cf6ec605e76e8;p=mesa.git 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 Reviewed-by: Jordan Justen --- diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 64172ca377b..e7d322c3f30 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 a53555cbed9..f67b0a7cb51 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);