Comments (8)
Comment by MarkY-LunarG (MIGRATED)
Friday Sep 08, 2017 at 14:52 GMT
This is currently "as designed". The original intent was this information was queried by the desktop loader from the layer JSON files. However, we are investigating the usefulness of this.
from vulkan-loader.
Comment by Themaister (MIGRATED)
Friday Sep 08, 2017 at 14:56 GMT
Similar for vkEnumerateDeviceExtensionProperties in CreateDevice.
from vulkan-loader.
Comment by Themaister (MIGRATED)
Friday Sep 08, 2017 at 14:56 GMT
The current workaround is dlsym(RTLD_DEFAULT, ...)
from vulkan-loader.
Comment by Themaister (MIGRATED)
Friday Sep 08, 2017 at 15:00 GMT
Actually, it's not ... vkEnumerateInstanceExtensions deadlocks in libvulkan.so. Probably some global lock is taken in vkCreateInstance and in vkEnumerateInstanceExtensions as well.
from vulkan-loader.
Comment by MarkY-LunarG (MIGRATED)
Friday Sep 08, 2017 at 15:01 GMT
I'm not sure why dlsym changes would make it work. The vkEnumerateInstanceExtensionProperties
extension should be implemented by the loader and ICDs only and you shouldn't attempt to try to call the ICD function directly. We're looking into a more proper way to do this. However, I don't see why vkEnumerateDeviceExtensionProperties
shouldn't work by default. I've assigned Lenny this issue, and he can look into more detail.
from vulkan-loader.
Comment by Themaister (MIGRATED)
Friday Sep 08, 2017 at 15:10 GMT
Yeah, dlsym(RTLD_DEFAULT) actually didn't work, so please disregard that.
What I tried was dlopen("libvulkan.so") directly, then call into vkEnumerateInstanceExtensionProperties, which deadlocked.
If there is something you can enable in the JSON to pre-enable extensions, that sounds reasonable too.
from vulkan-loader.
Comment by lenny-lunarg (MIGRATED)
Wednesday Sep 20, 2017 at 17:35 GMT
Sorry for the delay on this issue. I still haven't looked into exactly what this failure is, but I am working on a patch that will allow implicit layers to intercept functions like vkEnumerateInstanceExtensionProperties
which are called before an instance is created. This is done to allow implicit layers to hide things that they won't support. This won't directly address your problem, but it is related. I'll look into this specific issue in more detail shortly.
So the main thing here is I'm not ignoring this issue, I just haven't had a chance to look into this, but I will shortly.
from vulkan-loader.
It is now possible to intercept these functions from implicit layers. As for the part about calling into the function, I think this is just a known limitation and we might address it as part of a broader layer interface rework, but I don't expect to do that.
from vulkan-loader.
Related Issues (20)
- Remove vulkan-framework
- Log the origin of the manifest search paths (system, env-var, settings file, etc)
- 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
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.