Преглед изворни кода

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>
master
Samuel Pitoiset пре 5 година
родитељ
комит
f3cccd05d9
1 измењених фајлова са 5 додато и 1 уклоњено
  1. 5
    1
      src/amd/vulkan/radv_cmd_buffer.c

+ 5
- 1
src/amd/vulkan/radv_cmd_buffer.c Прегледај датотеку

@@ -2415,8 +2415,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) |

Loading…
Откажи
Сачувај