Comments (7)
To avoid a performance impact, maybe we could provide an alternative libvulkan.so to link against?
The debug library could do the validation check on the dispatch object before calling down the chain.
And for production the application use the standard library that does not include the check.
from vulkan-loader.
This seems to be a corner case even for debugging and validation. But certainly a separate build of the loader, or a mode of operation for the loader would be among the ways to implement it.
from vulkan-loader.
@jzulauf-lunarg How would app code enable such a mode? Through a new validation layer? Or did you have something else in mind?
from vulkan-loader.
Can't be a layer AFAICT. The loader itself is trying to use these handles in order to dispatch to the layers. As for enabling, the usual suspects would be reasonable choices: configuration file/registry/environment variable/loader specific proc query/compile time config.
From a developer point of view, how would one want to control such a mode?
from vulkan-loader.
I agree, the loader needs to do something. I think we should log and throw an acceptable error.
from vulkan-loader.
After thinking about this, I think the loader should always check. If the developer is using the loader entrypoints, then they are already in a slower path for everything but instance extensions. And in the case of instance extensions, it doesn't need to be very fast since there's already a lot of work the loader is performing (and even perhaps emulating in the case of some drivers supporting a given instance extension and others not).
My reasoning is that if the dispatch handle is wrong, we're going to be going off in la-la-land anyway. So I'll add logging to at least catch the case of bad handles before we die. I'm also planning on trying to add the VUID in the message so that if anyone ever turns on debug utils with validation, they will catch these as well.
from vulkan-loader.
Added. It will abort still, but it will at least output a message on abort indicating that the handle is invalid.
from vulkan-loader.
Related Issues (20)
- clang-cl arguments are being passed to clang on Windows HOT 2
- VK_LOADER_DEBUG should report actual library loaded, not library attempted HOT 2
- Crash because of unload_drivers_without_physical_devices() HOT 6
- Vulkan-ICD-Loader update causes all games to crash HOT 3
- Build failing on 32 bit Windows because of some pointer-to-integer size mismatch HOT 6
- dEQP-VK.api.object_management.multithreaded_per_thread_resources.device_group crash HOT 8
- Add support for env variables inside JSON manifests HOT 4
- vkGetInstanceProcAddr returns non-NULL for unsupported functions HOT 21
- Can a VK_ extension be disabled with env vars? HOT 7
- allow GAS on MinGW HOT 2
- Vulkan HOT 2
- Unable to build Vulkan Loader from source HOT 4
- Downstream packaging best practices in combination with Vulkan-Headers HOT 5
- Failure in one ICD causes total failure of vkEnumeratePhysicalDevices HOT 3
- Calling `vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceExtensionProperties")` from within a layer returns a NULL value HOT 3
- Segmentation fault at `loader_icd_destroy` on linux HOT 3
- vkEnumerateInstanceExtensionProperties is incorrectly implemented HOT 5
- Mismatched calloc/free in vkEnumeratePhysicalDevices when using custom VkAllocationCallbacks HOT 5
- Fullscreen-Vulkan-wayland windows flicker for absolutely no reasons sometimes HOT 5
- What is the recommended way for a layer to hide extensions? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vulkan-loader.