Lines Matching refs:ICD
30 to an ICD entry point.
36 achieve various functionality that a Vulkan driver (aka ICD) or loader doesn’t
48 ICD being called.
77 the loader again where this function calls every ICD’s vkCreateInstance and
88 they deal with only a single device and the ICD can always be the terminator of
209 ICD. Extensions can modify the behavior of the Vulkan API and need to be
222 enumerated. Duplicate extensions (e.g. an implicit layer and ICD might report
224 ICD version is reported and the layer version is culled. Extensions must
236 most efficient way to call into the ICD. For example, the diagram below shows
239 The resulting function pointer (fpGetDeviceQueue) would be the ICD’s entry
254 ### ICD discovery
262 on a system is platform dependent. Windows, Linux and Android ICD discovery
278 of an ICD shared library (".dll") file. For example:
283 "ICD": {
284 "library_path": "path to ICD library",
292 pathname to an ICD shared library file, which the loader will attempt to load
293 using LoadLibrary(). If the ICD is specified via a filename, the shared library
295 folder). If the ICD is specified via a relative pathname, it is relative to the
302 ICD shared library supports multiple, incompatible versions of text manifest
312 There are no rules about the name of the ICD shared library files. For example,
329 |vk\_vendora.json | "ICD": { "library\_path": "C:\\\\VENDORA\\\\vk\_vendora.dll", "api_version": "…
330 | vendorb\_vk.json | "ICD": { "library\_path": "vendorb\_vk.dll", "api_version": "1.0.5" } |
331 |vendorc\_icd.json | "ICD": { "library\_path": "vedorc\_icd.dll", "api_version": "1.0.5" }|
335 the ICD.library\_path value.
340 pre-production ICDs. In some cases, a pre-production ICD may be in an
341 installable package. In other cases, a pre-production ICD may simply be a
343 allow developers to point to such an ICD without modifying the
344 properly-installed ICD(s) on their system.
349 "VK\_ICD\_FILENAMES" environment variable is a semi-colon-separated list of ICD
355 file for a developer-built ICD. A semi-colon is only used if more than one ICD
358 For example, if a developer wants to refer to one ICD that they built, they
364 ICD, they can use the full pathname of the text file:
389 pathname of an ICD shared library (".so") file. For example:
394 "ICD": {
395 "library_path": "path to ICD library",
401 pathname to an ICD shared library file. If the ICD is specified via a filename,
406 required to do so. If the ICD is specified via a relative pathname, it is
413 the format of the manifest file changes in the future. If the same ICD shared
427 There are no rules about the name of the ICD shared library files. For example,
433 | vk\_vendora.json | "ICD": { "library\_path": "vendora.so", "api_version": "1.0.5" } |
434 | vendorb\_vk.json | "ICD": { "library\_path": "vendorb\_vulkan\_icd.so", "api_version": "1.0.5" } |
435 | vendorc\_icd.json | "ICD": { "library\_path": "/usr/lib/VENDORC/icd.so", "api_version": "1.0.5" }…
439 the ICD.library\_path value.
444 pre-production ICDs. In some cases, a pre-production ICD may be in an
445 installable package. In other cases, a pre-production ICD may simply be a
447 allow developers to point to such an ICD without modifying the
448 properly-installed ICD(s) on their system.
454 The "VK\_ICD\_FILENAMES" environment variable is a colon-separated list of ICD
462 file for a developer-built ICD. A colon is only used if more than one ICD is
465 For example, if a developer wants to refer to one ICD that they built, they
471 ICD, they can use the name of the text file in the system directory:
482 changed. The loader will load the driver/ICD via hw_get_module with the ID
487 ICD interface requirements
493 command. Thus, the loader to ICD interface requirements will be specified by
494 covering two areas: 1) Obtaining ICD Vulkan entry points; 2) Specifying
500 ##### Obtaining ICD entry points
502 Currently, two methods of the loader finding ICD entry points are supported on
507 - vk\_icdGetInstanceProcAddr is exported by the ICD library and it returns
511 vkCreateInstance and vkEnumerateInstanceExtensionProperties. The ICD must
516 extension entry points the ICD supports should be available via
523 - All other Vulkan entry points must either NOT be exported from the ICD
525 exported. This requirement is for ICD libraries that include other
528 application. In other words, the ICD library exported Vulkan symbols must not
532 names are used. On Linux, if official names are used, the ICD library must be
537 - vkGetInstanceProcAddr exported in the ICD library and returns valid function
540 - vkCreateInstance exported in the ICD library;
542 - vkEnumerateInstanceExtensionProperties exported in the ICD library;
572 - All dispatchable objects created by an ICD can be cast to void \*\*
575 which is owned by the loader. This implies three things for ICD drivers:
577 1. The ICD must return a pointer for the opaque dispatchable object handle.
580 pointer. Note: for any C\++ ICD's that implement VK objects directly as C\++
585 3. The loader checks for a magic value (ICD\_LOADER\_MAGIC) in all the created
612 vkCreateDevice before calling into the ICD; Filtering will be of extensions
613 advertised by entities (e.g. layers) different from the ICD in question.
614 - The loader will not call the ICD for vkEnumerate\*LayerProperties() as layer
616 - If an ICD library wants to implement a layer it can do so by having the
617 appropriate layer JSON manifest file refer to the ICD library file.
618 - The loader will not call the ICD for
644 complexity, and so their manifest files contain more information than ICD info
646 layers/extensions (perhaps even an ICD).
711 same shared library as an ICD), this must be specified to allow each layer to
813 files contain more information than ICD info files. For example, a layer shared
814 library file may contain multiple layers/extensions (perhaps even an ICD).
880 same shared library as an ICD), this must be specified to allow each layer to
994 to layer module with the loader and or the ICD being the bottom most command.
1292 loader trampoline will not do so. Common cases where a layer (or ICD) may create a