From 78dc0bc58910fe5bae7d8a573e9ee64a0026f685 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 6 Jun 2023 10:38:26 +0200 Subject: [PATCH] broadcom/cle: fix up viewport offset packet definition for V3D 4.1+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These are split between fine and coarse coordinates. We have only been using fine until now, so we kept the same naming convention we had prior to V3D 4.1 for simplicity, but we will start using the coarse coordinates soon too. Also, the signedness was reversed: coarse coordinates are signed and fine coordinates are unsigned. Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/cle/v3d_packet_v33.xml | 8 ++++---- src/broadcom/vulkan/v3dvx_cmd_buffer.c | 4 ++-- src/gallium/drivers/v3d/v3dx_emit.c | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/broadcom/cle/v3d_packet_v33.xml b/src/broadcom/cle/v3d_packet_v33.xml index 9d1a38a79e1..a0242b5f1c2 100644 --- a/src/broadcom/cle/v3d_packet_v33.xml +++ b/src/broadcom/cle/v3d_packet_v33.xml @@ -896,10 +896,10 @@ - - - - + + + + diff --git a/src/broadcom/vulkan/v3dvx_cmd_buffer.c b/src/broadcom/vulkan/v3dvx_cmd_buffer.c index f500c5810f4..024decba497 100644 --- a/src/broadcom/vulkan/v3dvx_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dvx_cmd_buffer.c @@ -1103,8 +1103,8 @@ v3dX(cmd_buffer_emit_viewport)(struct v3dv_cmd_buffer *cmd_buffer) } cl_emit(&job->bcl, VIEWPORT_OFFSET, vp) { - vp.viewport_centre_x_coordinate = vptranslate[0]; - vp.viewport_centre_y_coordinate = vptranslate[1]; + vp.fine_x = vptranslate[0]; + vp.fine_y = vptranslate[1]; } cmd_buffer->state.dirty &= ~V3DV_CMD_DIRTY_VIEWPORT; diff --git a/src/gallium/drivers/v3d/v3dx_emit.c b/src/gallium/drivers/v3d/v3dx_emit.c index becd196b108..5303eaf5e16 100644 --- a/src/gallium/drivers/v3d/v3dx_emit.c +++ b/src/gallium/drivers/v3d/v3dx_emit.c @@ -587,10 +587,15 @@ v3dX(emit_state)(struct pipe_context *pctx) } cl_emit(&job->bcl, VIEWPORT_OFFSET, vp) { +#if V3D_VERSION < 41 vp.viewport_centre_x_coordinate = v3d->viewport.translate[0]; vp.viewport_centre_y_coordinate = v3d->viewport.translate[1]; +#else + vp.fine_x = v3d->viewport.translate[0]; + vp.fine_y = v3d->viewport.translate[1]; +#endif } }