mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-17 08:46:32 +00:00
* Bump API patch number and header version number to 28 for this update. Github Issues: * Minor spelling and typography cleanup, add definitions of ename:VK_FALSE and ename:VK_TRUE as just what their names say (public issues 220, 318, 325, 365; internal issues 451, 496) * Clarify that the pname:maxDescriptorSet limits in the <<features-limits-required,Required Limits>> table are n * maxPerStage limit (where n=number of supported stages) (public issue 254). * Minor cleanup to <<boilerplate-platform-macros,Platform-Specific Macro Definitions>> appendix (public issue 314). * Add valid usage statement to slink:VkPipelineLayoutCreateInfo disallowing multiple push constant ranges for the same shader stage (public issue 340). * Clarify the elink:VkSharingMode description of what executing the "same" barriers means in case of ownership transfer (public issue 347). * Rename copyright.txt and add COPYING.md to try and reduce confusion about applicable copyrights (public issue 350). * Extend the table in the <<boilerplate-wsi-header, Window System-Specific Header Control>> section to describe the external headers included when each etext:VK_USE_PLATFORM_* macro is defined (public issue 376). Internal Issues: * Add "Revision History" to the PDF outputs following the table of contents, to match HTML outputs (internal issue 43). * Clarified that flink:vkMapMemory may fail due to virtual address space limitations (internal issue 346). * Add +refBody+ comment markup for ref page autoextraction when required (internal issue 400). * Document proper use of "mipmap" and "mip" in the style guide API naming rules, matching the spelling rules (internal issue 471). * Tweak the <<extensions,Layers and Extensions>> appendix to note that the Specification may be built with arbitrary combinations of extensions (internal issue 483). * Remove incorrect statement allowing slink:VkClearAttachment::pname:colorAttachment to be >= slink:VkSubpassDescription::pname:colorAttachmentCount (internal issue 488). * The <<features-limits-viewportboundsrange,viewportBoundsRange>> is expressed in terms of the pname:maxViewportDimensions but this is actually two values. Clarify that it's based on the larger of the two (if they differ) (internal issue 499). Other Issues: * Reflowed text of the entire spec using the 'reflow' Makefile gater, to (hopefully) reduce future internal git churn as edits are made and extensions added in return for one-time pain. This has no perceptible change on the spec outputs but considerable changes on the asciidoc source (internal issue 367).
146 lines
4.2 KiB
Plaintext
146 lines
4.2 KiB
Plaintext
[[VK_NV_dedicated_allocation]]
|
|
== VK_NV_dedicated_allocation
|
|
|
|
*Name String*::
|
|
+VK_NV_dedicated_allocation+
|
|
*Extension Type*::
|
|
Device extension
|
|
*Registered Extension Number*::
|
|
27
|
|
*Status*::
|
|
Draft.
|
|
*Last Modified Date*::
|
|
2016-05-31
|
|
*Revision*::
|
|
1
|
|
*IP Status*::
|
|
No known IP claims.
|
|
*Dependencies*::
|
|
- This extension is written against version 1.0.
|
|
of the Vulkan API.
|
|
*Contributors*::
|
|
- Jeff Bolz, NVIDIA
|
|
*Contacts*::
|
|
- Jeff Bolz (jbolz 'at' nvidia.com)
|
|
|
|
This extension allows device memory to be allocated for a particular buffer
|
|
or image resource, which on some devices can significantly improve the
|
|
performance of that resource.
|
|
Normal device memory allocations must support memory aliasing and sparse
|
|
binding, which could interfere with optimizations like framebuffer
|
|
compression or efficient page table usage.
|
|
This is important for render targets and very large resources, but need not
|
|
(and probably should not) be used for smaller resources that can benefit
|
|
from suballocation.
|
|
|
|
This extension adds a few small structures to resource creation and memory
|
|
allocation: a new structure that flags whether am image/buffer will have a
|
|
dedicated allocation, and a structure indicating the image or buffer that an
|
|
allocation will be bound to.
|
|
|
|
=== New Object Types
|
|
|
|
None.
|
|
|
|
=== New Enum Constants
|
|
|
|
* Extending elink:VkStructureType:
|
|
** ename:VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
|
|
** ename:VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
|
|
** ename:VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
|
|
|
|
=== New Enums
|
|
|
|
None.
|
|
|
|
=== New Structures
|
|
|
|
* slink:VkDedicatedAllocationImageCreateInfoNV
|
|
* slink:VkDedicatedAllocationBufferCreateInfoNV
|
|
* slink:VkDedicatedAllocationMemoryAllocateInfoNV
|
|
|
|
=== New Functions
|
|
|
|
None.
|
|
|
|
=== Issues
|
|
|
|
None.
|
|
|
|
=== Examples
|
|
|
|
[source,{basebackend@docbook:c++:cpp}]
|
|
--------------------------------------
|
|
|
|
// Create an image with
|
|
// VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
|
|
// set to VK_TRUE
|
|
|
|
VkDedicatedAllocationImageCreateInfoNV dedicatedImageInfo =
|
|
{
|
|
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, // sType
|
|
NULL, // pNext
|
|
VK_TRUE, // dedicatedAllocation
|
|
};
|
|
|
|
VkImageCreateInfo imageCreateInfo =
|
|
{
|
|
VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // sType
|
|
&dedicatedImageInfo // pNext
|
|
// Other members set as usual
|
|
};
|
|
|
|
VkImage image;
|
|
VkResult result = vkCreateImage(
|
|
device,
|
|
&imageCreateInfo,
|
|
NULL, // pAllocator
|
|
&image);
|
|
|
|
VkMemoryRequirements memoryRequirements;
|
|
vkGetImageMemoryRequirements(
|
|
device,
|
|
image,
|
|
&memoryRequirements);
|
|
|
|
// Allocate memory with VkDedicatedAllocationMemoryAllocateInfoNV::image
|
|
// pointing to the image we are allocating the memory for
|
|
|
|
VkDedicatedAllocationMemoryAllocateInfoNV dedicatedInfo =
|
|
{
|
|
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, // sType
|
|
NULL, // pNext
|
|
image, // image
|
|
VK_NULL_HANDLE, // buffer
|
|
};
|
|
|
|
VkMemoryAllocateInfo memoryAllocateInfo =
|
|
{
|
|
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // sType
|
|
&dedicatedInfo, // pNext
|
|
memoryRequirements.size, // allocationSize
|
|
FindMemoryTypeIndex(memoryRequirements.memoryTypeBits), // memoryTypeIndex
|
|
};
|
|
|
|
VkDeviceMemory memory;
|
|
vkAllocateMemory(
|
|
device,
|
|
&memoryAllocateInfo,
|
|
NULL, // pAllocator
|
|
&memory);
|
|
|
|
// Bind the image to the memory
|
|
|
|
vkBindImageMemory(
|
|
device,
|
|
image,
|
|
memory,
|
|
0);
|
|
|
|
--------------------------------------
|
|
|
|
=== Version History
|
|
|
|
* Revision 1, 2016-05-31 (Jeff Bolz)
|
|
- Internal revisions
|