-
Notifications
You must be signed in to change notification settings - Fork 407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GPU-AV check index buffer out-of-bounds #2492
Labels
Comments
@Tony-LunarG I think the technique we chatted about the other day where we insert a compute pipeline to check buffers before they are consumed by the API might be the ticket here. This is another case that would help justify the infrastructure investment. |
jeremyg-lunarg
added a commit
to jeremyg-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 9, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
jeremyg-lunarg
added a commit
to jeremyg-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 9, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 13, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 13, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 14, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
jeremyg-lunarg
added a commit
to jeremyg-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 14, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 16, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 19, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 19, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Aug 27, 2024
This involves splitting up draw.vert into separate shaders for non-indexed indirect, indexed (both indirect and direct) and mesh draw calls. Fixes KhronosGroup#2492
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 3, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 3, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 3, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 3, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 4, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 11, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 12, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 12, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
arno-lunarg
pushed a commit
to arno-lunarg/Vulkan-ValidationLayers
that referenced
this issue
Sep 12, 2024
Fixes KhronosGroup#2492 Completely rework gpuav_draw, to make it easier to add validation, and debug existing one. When adding validation for some VkBuffer, the 2 more importants parts are 1) creating the validation shader and 2) have an informative error message. gpuav_draw.cpp has been redesigned around that idea. Each shader is in charge of its small validation, no uber shader trying to cater to all needs. Doing that ends up being a mess, with the need to correctly pipe data to the validation shader. Validation shaders are now more fine grained. The C++ has been reworked around some template to streamline the process of adding validation. The general idea is the following: 1) Declase a new "shader" struct representing validation shader bindings and push contants 2) fill that struct 3) bind this struct and the validation pipeline 4) dispatch the appropriate number of draws About 4): we used to dispatch one draw, and do for loop in the shader to scan buffer elements. GPU are not good at that, instead a proper amount of draws should be dispatched, each in charge of doing it's small validation logic.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
We recently had a GPU hang that GPU Assisted Validation was unable to catch. We were running with robustBufferAccess disabled and had a -1 in our index buffer. The draw with the index buffer was dispatched from an indirect draw command. It would be a nice feature addition if GPUAV could check this case since we couldn't catch it with validation or GPUAV.
@Tony-LunarG @greg-lunarg
The text was updated successfully, but these errors were encountered: