aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-07-02 16:49:40 -0600
committerMark Lobodzinski <mark@lunarg.com>2015-07-02 16:49:40 -0600
commiteadf998a558e2098f2fb2d04a6b7aba54a2f1f06 (patch)
treea1fb828bd48c8e7afe48b18c0d02f6ab83a3c9c1 /include
parent68f05a5a0aefff7fee8f59b23c69d1514078d399 (diff)
downloadusermoji-eadf998a558e2098f2fb2d04a6b7aba54a2f1f06.tar.xz
vulkan.h: V115 -- Reintroduce memory heaps & types. Bug #14082.
Reworked memory properties and types and added support for multiple heaps.
Diffstat (limited to 'include')
-rw-r--r--include/vulkan.h46
1 files changed, 30 insertions, 16 deletions
diff --git a/include/vulkan.h b/include/vulkan.h
index 874caf42..2ed6096c 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -33,7 +33,7 @@
#include "vk_platform.h"
// Vulkan API version supported by this file
-#define VK_API_VERSION VK_MAKE_VERSION(0, 111, 0)
+#define VK_API_VERSION VK_MAKE_VERSION(0, 115, 0)
#ifdef __cplusplus
extern "C"
@@ -101,10 +101,11 @@ VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkRenderPass, VkNonDispatchable)
#define VK_MAX_PHYSICAL_DEVICE_NAME 256
#define VK_MAX_EXTENSION_NAME 256
-
-#define VK_LOD_CLAMP_NONE MAX_FLOAT
-#define VK_LAST_MIP_LEVEL UINT32_MAX
-#define VK_LAST_ARRAY_SLICE UINT32_MAX
+#define VK_MAX_MEMORY_TYPES 32
+#define VK_MAX_MEMORY_HEAPS 16
+#define VK_LOD_CLAMP_NONE MAX_FLOAT
+#define VK_LAST_MIP_LEVEL UINT32_MAX
+#define VK_LAST_ARRAY_SLICE UINT32_MAX
#define VK_WHOLE_SIZE UINT64_MAX
@@ -1308,9 +1309,23 @@ typedef struct VkPhysicalDeviceQueueProperties_
bool32_t supportsTimestamps;
} VkPhysicalDeviceQueueProperties;
+typedef struct VkMemoryType_
+{
+ VkMemoryPropertyFlags propertyFlags; // Memory properties of this memory type
+ uint32_t heapIndex; // Index of the memory heap allocations of this memory type are taken from
+} VkMemoryType;
+
+typedef struct VkMemoryHeap_
+{
+ VkDeviceSize size; // Available memory in the heap
+} VkMemoryHeap;
+
typedef struct VkPhysicalDeviceMemoryProperties_
{
- bool32_t supportsMigration;
+ uint32_t memoryTypeCount;
+ VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
+ uint32_t memoryHeapCount;
+ VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
} VkPhysicalDeviceMemoryProperties;
typedef struct VkMemoryAllocInfo_
@@ -1318,18 +1333,9 @@ typedef struct VkMemoryAllocInfo_
VkStructureType sType; // Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO
const void* pNext; // Pointer to next structure
VkDeviceSize allocationSize; // Size of memory allocation
- VkMemoryPropertyFlags memProps; // Memory property flags
+ uint32_t memoryTypeIndex; // Index of the memory type to allocate from
} VkMemoryAllocInfo;
-typedef struct VkMemoryRequirements_
-{
- VkDeviceSize size; // Specified in bytes
- VkDeviceSize alignment; // Specified in bytes
- VkDeviceSize granularity; // Granularity at which memory can be bound to resource sub-ranges specified in bytes (usually the page size)
- VkMemoryPropertyFlags memPropsAllowed; // Allowed memory property flags
- VkMemoryPropertyFlags memPropsRequired; // Required memory property flags
-} VkMemoryRequirements;
-
typedef struct VkMappedMemoryRange_
{
VkStructureType sType; // Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
@@ -1339,6 +1345,14 @@ typedef struct VkMappedMemoryRange_
VkDeviceSize size; // Size of the range within the mapped memory
} VkMappedMemoryRange;
+typedef struct VkMemoryRequirements_
+{
+ VkDeviceSize size; // Specified in bytes
+ VkDeviceSize alignment; // Specified in bytes
+ VkDeviceSize granularity; // Granularity at which memory can be bound to resource sub-ranges specified in bytes (usually the page size)
+ uint32_t memoryTypeBits; // Bitfield of the allowed memory type indices into memoryTypes[] for this object
+} VkMemoryRequirements;
+
typedef struct VkFormatProperties_
{
VkFormatFeatureFlags linearTilingFeatures; // Format features in case of linear tiling