[Mesa-dev] [PATCH 5/5] anv: Emit DRAWING_RECTANGLE once at driver initialization

Jordan Justen jordan.l.justen at intel.com
Fri May 27 20:26:28 UTC 2016


2-5 Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On 2016-05-20 12:41:08, Jason Ekstrand wrote:
> 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.
> ---
>  src/intel/vulkan/genX_cmd_buffer.c | 13 -------------
>  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);
>  
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list