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>
This commit is contained in:
@@ -1128,19 +1128,6 @@ void genX(CmdBeginRenderPass)(
|
|||||||
|
|
||||||
genX(flush_pipeline_select_3d)(cmd_buffer);
|
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);
|
genX(cmd_buffer_set_subpass)(cmd_buffer, pass->subpasses);
|
||||||
anv_cmd_buffer_clear_subpass(cmd_buffer);
|
anv_cmd_buffer_clear_subpass(cmd_buffer);
|
||||||
}
|
}
|
||||||
|
@@ -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_STREAMOUT), so);
|
||||||
anv_batch_emit(&batch, GENX(3DSTATE_AA_LINE_PARAMETERS), aa);
|
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
|
#if GEN_GEN >= 8
|
||||||
anv_batch_emit(&batch, GENX(3DSTATE_WM_CHROMAKEY), ck);
|
anv_batch_emit(&batch, GENX(3DSTATE_WM_CHROMAKEY), ck);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user