Skip to content
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

stateless: Refactor pNext, flag and enum checking utils #9220

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

jeremyg-lunarg
Copy link
Contributor

Move most of the low level checking methods into a separate class. These checks are used with in the pNext checks and in many cases require knowledge about which extensions are enabled in the VkInstance, VkPhysicalDevice or VkDevice. The new separate object can be set up to use the correct DeviceExtensions object and then the extension checks within the rest of the code become much simpler.

DeviceExtensions has always inherited from InstanceExtensions, so having separate device_extension and instance_extension members in ValidationObject was redundant. There's now a single extensions member and there are 3 use cases:

  1. In vvl::dispatch::Instance and ValidationObjects representinga VkInstance, extensions represents what was in VkInstanceCreateInfo
  2. In vvl::dispatch::Device and ValidationObjects representing a VkDevice, extensions represents what was in VkDeviceCreateInfo for device extensions, as well as what is in the VkInstance
  3. In StatelessValidation objects representing VkInstances, the physical_device_extensions map represents the supported extensions for all physical devices.

@jeremyg-lunarg jeremyg-lunarg requested a review from a team as a code owner January 14, 2025 22:50
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 345243.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18660 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18660 failed.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from 797f6a0 to e37de73 Compare January 14, 2025 23:50
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 345271.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18661 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18661 failed.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from e37de73 to dedaac5 Compare January 15, 2025 15:41
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 345894.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18676 running.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from dedaac5 to 8eac219 Compare January 15, 2025 15:50
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 345912.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18677 running.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from 8eac219 to be91296 Compare January 15, 2025 16:17
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 345965.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18678 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18678 failed.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from be91296 to a12276c Compare January 15, 2025 17:29
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 346103.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18682 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18682 failed.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from a12276c to 7572d51 Compare January 15, 2025 18:08
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 346151.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18684 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18684 passed.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from 7572d51 to a71d272 Compare January 15, 2025 19:07
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 346227.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18686 running.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from a71d272 to abf381e Compare January 15, 2025 19:27
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 346261.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18688 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18688 passed.

@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from abf381e to 0f4f347 Compare January 16, 2025 00:24
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 346564.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18689 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18689 passed.

Move most of the low level checking methods into a separate class.
These checks are used with in the pNext checks and in many cases
require knowledge about which extensions are enabled in the VkInstance,
VkPhysicalDevice or VkDevice. The new separate object can be set
up to use the correct DeviceExtensions object and then the
extension checks within the rest of the code become much simpler.
DeviceExtensions has always inherited from InstanceExtensions,
so having separate device_extension and instance_extension
members in ValidationObject was redundant. There's now a single
extensions member and there are 3 use cases:

1) In vvl::dispatch::Instance and ValidationObjects representing
a VkInstance, extensions represents what was in VkInstanceCreateInfo
2) In vvl::dispatch::Device and ValidationObjects representing
a VkDevice, extensions represents what was in VkDeviceCreateInfo
for device extensions, as well as what is in the VkInstance
3) In StatelessValidation objects representing VkInstances,
the physical_device_extensions map represents the supported
extensions for all physical devices.
@jeremyg-lunarg jeremyg-lunarg force-pushed the jeremyg-stateless-pnext branch from 0f4f347 to 91bb8c0 Compare January 16, 2025 14:34
@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build queued with queue ID 347148.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18699 running.

@ci-tester-lunarg
Copy link
Collaborator

CI Vulkan-ValidationLayers build # 18699 failed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants