Mesa (main): radv: use null vertex descriptor if num_records=0

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 6 13:15:46 UTC 2021


Module: Mesa
Branch: main
Commit: 307a4bf4abcf0c1f86879e616945236c8635d996
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=307a4bf4abcf0c1f86879e616945236c8635d996

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Tue Jun 29 18:54:45 2021 +0100

radv: use null vertex descriptor if num_records=0

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11642>

---

 src/amd/vulkan/radv_cmd_buffer.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index ec7e11e20cd..55d7ee4e6a3 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -2920,8 +2920,16 @@ radv_flush_vertex_descriptors(struct radv_cmd_buffer *cmd_buffer, bool pipeline_
             /* GFX10 uses OOB_SELECT_RAW if stride==0, so convert num_records from elements into
              * into bytes in that case. GFX8 always uses bytes.
              */
-            if (num_records && (chip == GFX8 || (chip >= GFX10 && !stride)))
+            if (num_records && (chip == GFX8 || (chip >= GFX10 && !stride))) {
                num_records = (num_records - 1) * stride + attrib_end;
+            } else if (!num_records) {
+               /* On GFX9 (GFX6/7 untested), it seems bounds checking is disabled if both
+                * num_records and stride are zero. This doesn't seem necessary on GFX8, GFX10 and
+                * GFX10.3 but it doesn't hurt.
+                */
+               memset(desc, 0, 16);
+               continue;
+            }
          } else {
             if (chip != GFX8 && stride)
                num_records = DIV_ROUND_UP(num_records, stride);



More information about the mesa-commit mailing list