Application Binary Interface The mechanism by which Vulkan is made available to applications is platform- or implementation- defined. The pAllocator parameter can be set to a non-NULL value such that allocations for the given object are delegated to an application provided callback; refer to the Memory Allocation chapter for further details.
In particular, any guarantees made by an operating system about whether memory from one process can be visible to another process or not must not be violated by a Vulkan implementation for any memory allocation.
Some valid usage conditions have dependencies on run-time limits or feature availability. Valid usage conditions should. Fortunately, most higher-level synchronization primitives like the pthread library perform memory barriers as a part of mutual exclusion, so mutexing Vulkan objects via these primitives will have the desired effect.
This allows the Vulkan shared library to be updated with additional symbols for new API versions or extensions without causing symbol conflicts with existing applications. Applications should only rely on shared library symbols for commands in the minimum core version required by the application.
Thus error checking and validation of state in the core layer is minimal, although more rigorous validation can be enabled through the use of layers. Note The scope of external handles and their associated resources may vary according to their type, but they can generally be shared across process and API boundaries.
External Object Handles As defined above, the scope of object handles created or allocated from a VkDevice is limited to that logical device. Threading Behavior Vulkan is intended to provide scalable performance when used on multiple host threads. In these cases, the caller must guarantee that at most one thread is using a given element within the list at a given time.
The last in-parameter to each command that creates or destroys a Vulkan object is pAllocator. Once validated, released applications should not enable validation layers by default. Except as documented elsewhere in the Specification, the behavior of the core layer to an application using the API incorrectly is undefined, and may include program termination.
These objects do not take allocators; if host memory is needed, they will use the allocator that was specified when their parent pool was created. These restrictions are documented together with the definition of each such command.
One of the core principles of Vulkan is that building and submitting command buffers should be highly efficient.
To bring an external object into scope, an external handle must be exported from the object in the source scope and imported into the destination scope.killarney10mile.com的新浪微博 扫码加入微信Oracle小密圈，了解Oracle最新技术下载分享资源 ← Spring into action with our new OBIEE 12c Systems Management & Security On Demand Training course Archiving MySQL Tables in ClickHouse →.
Khronos makes no, and expressly disclaims any, representations or warranties, express or implied, regarding this Specification, including, without limitation: merchantability, fitness for a particular purpose, non-infringement of any intellectual property, correctness, accuracy, completeness, timeliness, and reliability.Download