diff options
author | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2019-12-18 13:29:39 +0100 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2020-01-07 09:20:49 -0800 |
commit | 720263db9f3c0101293bc9a17357d4b67eb14c74 (patch) | |
tree | c8d61c4be09c02f8ae592a26a53fdb272c936de5 | |
parent | fe3c3f454c993616749f464e54bc0ff19da4814f (diff) |
radv/gfx10: fix the out-of-bounds check for vertex descriptors
When stride is 0, it should check against the offset not the index.
This fixes black character models with Beat Saber and missing snow
with Dragon Quest.
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2233
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1975
Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3147>
(cherry picked from commit f3cccd05d9f6e9d05c18d1a3a5f9eb863e4f264b)
-rw-r--r-- | src/amd/vulkan/radv_cmd_buffer.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 75e01b69548..5a95fdf9abc 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -2428,8 +2428,12 @@ radv_flush_vertex_descriptors(struct radv_cmd_buffer *cmd_buffer, S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W); if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX10) { + /* OOB_SELECT chooses the out-of-bounds check: + * - 1: index >= NUM_RECORDS (Structured) + * - 3: offset >= NUM_RECORDS (Raw) + */ desc[3] |= S_008F0C_FORMAT(V_008F0C_IMG_FORMAT_32_UINT) | - S_008F0C_OOB_SELECT(1) | + S_008F0C_OOB_SELECT(stride ? 1 : 3) | S_008F0C_RESOURCE_LEVEL(1); } else { desc[3] |= S_008F0C_NUM_FORMAT(V_008F0C_BUF_NUM_FORMAT_UINT) | |