vulkan: Sanitize pSampleMask in CmdSetSampleMaskEXT
authorDanylo Piliaiev <dpiliaiev@igalia.com>
Fri, 7 Apr 2023 13:45:45 +0000 (15:45 +0200)
committerMarge Bot <emma+marge@anholt.net>
Tue, 11 Apr 2023 19:20:50 +0000 (19:20 +0000)
commit17df75d47d706232b30b34baeeb43a15311777db
tree436cb6e17e04669855b7ef525f0d0e38d5237bd1
parent89aa36359328ea48fa29be8dd439dd87043eaa03
vulkan: Sanitize pSampleMask in CmdSetSampleMaskEXT

ms.sample_mask is only 16b, while VkSampleMask is 32b and it is allowed
to have all of them set even if maximum 16 samples are supported.

E.g. happens with Zink running supertuxkart:
 supertuxkart: ../../../source/mesa/src/vulkan/runtime/vk_graphics_state.c:2346: vk_common_CmdSetSampleMaskEXT: Assertion `(dyn)->ms.sample_mask == (*pSampleMask)' failed.

  vk_common_CmdSetSampleMaskEXT (commandBuffer=0x5556e903f0, samples=VK_SAMPLE_COUNT_1_BIT, pSampleMask=0x5556819ccc) at vk_graphics_state.c:2346
  zink_draw<(zink_multidraw)1, (zink_dynamic_state)5, true, false> (...) at zink_draw.cpp:639
  zink_draw_vbo<(zink_multidraw)1, (zink_dynamic_state)5, true> (...) at zink_draw.cpp:922

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22360>
src/vulkan/runtime/vk_graphics_state.c