Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_EXT_external_memory_acquire_unmodified - device extension
VK_EXT_external_memory_acquire_unmodified
- Name String
VK_EXT_external_memory_acquire_unmodified
- Extension Type
- Device extension
- Registered Extension Number
- 454
- Revision
- 1
- Ratification Status
- Ratified
- Extension and Version Dependencies
- VK_KHR_external_memory
- Contact
- Extension Proposal
- VK_EXT_external_memory_acquire_unmodified
Other Extension Metadata
- Last Modified Date
- 2023-03-09
- Contributors
- Lina Versace, Google
- Chia-I Wu, Google
- James Jones, NVIDIA
- Yiwei Zhang, Google
Description
A memory barrier may have a performance penalty when acquiring ownership of a subresource range from an external queue family. This extension provides API that may reduce the performance penalty if ownership of the subresource range was previously released to the external queue family and if the resource’s memory has remained unmodified between the release and acquire operations.
New Structures
New Enum Constants
Version History
Revision 1, 2023-03-09 (Lina Versace)
- Initial revision
See Also
ExternalMemoryAcquireUnmodifiedEXT
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- data ExternalMemoryAcquireUnmodifiedEXT = ExternalMemoryAcquireUnmodifiedEXT {}
- type EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION = 1
- pattern EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION :: forall a. Integral a => a
- type EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified"
- pattern EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
data ExternalMemoryAcquireUnmodifiedEXT Source #
VkExternalMemoryAcquireUnmodifiedEXT - Structure specifying that external memory has remained unmodified since releasing ownership
Description
If the application releases ownership of the subresource range to one of
the special queue families reserved for external memory ownership
transfers with a memory barrier structure, and later re-acquires
ownership from the same queue family with a memory barrier structure,
and if no range of DeviceMemory
bound to the
resource was modified at any time between the release operation and
the acquire operation, then the application should add a
ExternalMemoryAcquireUnmodifiedEXT
structure to the pNext
chain of
the acquire operation's memory barrier structure because this may
reduce the performance penalty.
This struct is ignored if acquireUnmodifiedMemory
is
FALSE
. In particular,
FALSE
does not specify that memory
was modified.
This struct is ignored if the memory barrier’s srcQueueFamilyIndex
is
not a special queue family reserved for external memory ownership
transfers.
Note
The method by which the application determines whether memory was modified between the release operation and acquire operation is outside the scope of Vulkan.
For any Vulkan operation that accesses a resource, the application must not assume the implementation accesses the resource’s memory as read-only, even for apparently read-only operations such as transfer commands and shader reads.
The validity of
ExternalMemoryAcquireUnmodifiedEXT
::acquireUnmodifiedMemory
is
independent of memory ranges outside the ranges of
DeviceMemory
bound to the resource. In
particular, it is independent of any implementation-private memory
associated with the resource.
Valid Usage
-
If
acquireUnmodifiedMemory
isTRUE
, and the memory barrier’ssrcQueueFamilyIndex
is a special queue family reserved for external memory ownership transfers (as described in https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers), then each range ofDeviceMemory
bound to the resource must have remained unmodified during all time since the resource’s most recent release of ownership to the queue family.
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
See Also
VK_EXT_external_memory_acquire_unmodified,
Bool32
,
StructureType
ExternalMemoryAcquireUnmodifiedEXT | |
|
Instances
pattern EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME = "VK_EXT_external_memory_acquire_unmodified" Source #
pattern EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #