-
Notifications
You must be signed in to change notification settings - Fork 414
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
layers: Don't pre-query surface attributes during creation #3452
layers: Don't pre-query surface attributes during creation #3452
Conversation
CI Vulkan-ValidationLayers build queued with queue ID 2893. |
CI Vulkan-ValidationLayers build # 5237 running. |
CI Vulkan-ValidationLayers build # 5237 passed. |
Thanks for working on this! |
😕 Ok, I'll take a look at those test cases on different hw and see if I can figure out what to do instead. The original caching wasn't 100% correct so I can't just go back to it, unfortunately. |
ebe8d10
to
7b634bd
Compare
CI Vulkan-ValidationLayers build queued with queue ID 4118. |
CI Vulkan-ValidationLayers build # 5270 running. |
CI Vulkan-ValidationLayers build # 5270 failed. |
7b634bd
to
0ef51c1
Compare
CI Vulkan-ValidationLayers build queued with queue ID 4220. |
CI Vulkan-ValidationLayers build # 5274 running. |
CI Vulkan-ValidationLayers build # 5274 failed. |
0ef51c1
to
330e816
Compare
CI Vulkan-ValidationLayers build queued with queue ID 4271. |
CI Vulkan-ValidationLayers build # 5277 running. |
CI Vulkan-ValidationLayers build # 5277 failed. |
330e816
to
e5a6e74
Compare
CI Vulkan-ValidationLayers build queued with queue ID 4343. |
CI Vulkan-ValidationLayers build # 5280 running. |
CI Vulkan-ValidationLayers build # 5280 failed. |
e5a6e74
to
3dc758f
Compare
CI Vulkan-ValidationLayers build queued with queue ID 4914. |
CI Vulkan-ValidationLayers build # 5297 running. |
CI Vulkan-ValidationLayers build # 5297 failed. |
CI Vulkan-ValidationLayers build # 5300 running. |
CI Vulkan-ValidationLayers build # 5300 failed. |
c89ec83
to
bc7abb4
Compare
CI Vulkan-ValidationLayers build queued with queue ID 5362. |
CI Vulkan-ValidationLayers build # 5303 running. |
CI Vulkan-ValidationLayers build # 5303 passed. |
bc7abb4
to
327afef
Compare
CI Vulkan-ValidationLayers build queued with queue ID 5639. |
CI Vulkan-ValidationLayers build # 5314 running. |
CI Vulkan-ValidationLayers build # 5314 passed. |
327afef
to
fc8d7f9
Compare
CI Vulkan-ValidationLayers build queued with queue ID 6760. |
CI Vulkan-ValidationLayers build # 5329 running. |
CI Vulkan-ValidationLayers build # 5329 passed. |
Before calling InitSwapchainInfo(), make sure the physical device and surface are supported. The vulkan calls in InitSwapchainInfo() require this to be true or they are invalid to make.
VUID-VkSwapchainCreateInfoKHR-surface-01270 requires that the device support the surface, it doesn't require that you actually call vkGetPhysicalDeviceSurfaceSupportKHR(). (You should, but that's a best practice...) Change the test to create a device that doesn't support surface present, and then use it to try to create a swapchain.
Make sure it only calls vkGetDeviceQueue() on the queues specified in the device create info. This allows creating devices with a limited set of queues rather than everything the phyiscal device supports.
Since these images are only destroyed when the swapchain is destroyed, calling RemoveParent on it is unnecessary and can cause the parent_nodes_ set to be corrupted.
Some of the calls to get surface capabilities, formats or presentation modes are very slow in some implementations. Revert back to caching results made by the application, but store them in SURFACE_STATE rather than PHYSICAL_DEVICE_STATE. The original code assumed that the same results would apply to all surfaces, which doesn't appear to be true.
fc8d7f9
to
60eacee
Compare
CI Vulkan-ValidationLayers build queued with queue ID 6939. |
CI Vulkan-ValidationLayers build # 5334 running. |
CI Vulkan-ValidationLayers build # 5334 passed. |
This reverts commit a8e2d2c. Reason for revert: performance regression fixed in KhronosGroup/Vulkan-ValidationLayers#3452, rolled into Chromium in crrev.com/934959. Original change's description: > Increase angle_end2end_tests batch timeout on Win7 NVIDIA > > To unblock rolling VVL into Chromium, > which have a performance regression on this platform. > > Bug: 1249209 > Change-Id: Ic66a1309b0482c41d8057bfea13303f2a306923d > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3227076 > Auto-Submit: Yuly Novikov <ynovikov@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Cr-Commit-Position: refs/heads/main@{#932483} Bug: 1249209 Change-Id: I80c579110027037a786ca863de423c3628c45fc8 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3246093 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Cr-Commit-Position: refs/heads/main@{#935243}
Until commit c7a834a, each PHYSICAL_DEVICE_STATE had a cache of supported surface formats which was used in validating swapchain creation.
Some of the calls to get surface capabilities, formats or presentation modes are very slow in some implementations. Revert back to caching results made by the application, but store them in SURFACE_STATE rather than PHYSICAL_DEVICE_STATE. The original code assumed that the same results would apply to all surfaces, which doesn't appear to be true.