diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2015-04-17 14:11:39 -0500 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2015-04-17 14:14:58 -0500 |
| commit | 1cfc77227fd92392bf16e5aa359edbc18ef3547b (patch) | |
| tree | 25fd6835939af7a21d7d06923f9df5f4645990c9 | |
| parent | 410cf39ab1d94729e7a4261ce18d32c5c8dcedeb (diff) | |
| download | usermoji-1cfc77227fd92392bf16e5aa359edbc18ef3547b.tar.xz | |
vulkan: Update vulkan.h for revision 89 -- Bug #13743
Generalizing the VkDescriptorSetLayoutChain object.
| -rw-r--r-- | demos/cube.c | 18 | ||||
| -rw-r--r-- | demos/tri.c | 18 | ||||
| -rw-r--r-- | icd/nulldrv/nulldrv.c | 34 | ||||
| -rw-r--r-- | icd/nulldrv/nulldrv.h | 5 | ||||
| -rw-r--r-- | include/vkDbg.h | 2 | ||||
| -rw-r--r-- | include/vkLayer.h | 2 | ||||
| -rw-r--r-- | include/vulkan.h | 32 | ||||
| -rw-r--r-- | layers/draw_state.cpp | 10 | ||||
| -rw-r--r-- | layers/object_track.h | 6 | ||||
| -rw-r--r-- | layers/param_checker.cpp | 5 | ||||
| -rwxr-xr-x | vulkan.py | 15 |
11 files changed, 84 insertions, 63 deletions
diff --git a/demos/cube.c b/demos/cube.c index 1be3c8c4..5ebc5b81 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -243,7 +243,7 @@ struct demo { } uniform_data; VkCmdBuffer cmd; // Buffer for initialization commands - VkDescriptorSetLayoutChain desc_layout_chain; + VkPipelineLayout pipeline_layout; VkDescriptorSetLayout desc_layout; VkPipeline pipeline; @@ -1143,8 +1143,16 @@ static void demo_prepare_descriptor_layout(struct demo *demo) &descriptor_layout, &demo->desc_layout); assert(!err); - err = vkCreateDescriptorSetLayoutChain(demo->device, - 1, &demo->desc_layout, &demo->desc_layout_chain); + const VkPipelineLayoutCreateInfo pPipelineLayoutCreateInfo = { + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + .pNext = NULL, + .descriptorSetCount = 1, + .pSetLayouts = &demo->desc_layout, + }; + + err = vkCreatePipelineLayout(demo->device, + &pPipelineLayoutCreateInfo, + &demo->pipeline_layout); assert(!err); } @@ -1293,7 +1301,7 @@ static void demo_prepare_pipeline(struct demo *demo) memset(&pipeline, 0, sizeof(pipeline)); pipeline.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; - pipeline.pSetLayoutChain = demo->desc_layout_chain; + pipeline.layout = demo->pipeline_layout; memset(&ia, 0, sizeof(ia)); ia.sType = VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO; @@ -1831,7 +1839,7 @@ static void demo_cleanup(struct demo *demo) vkDestroyObject(demo->depth_stencil); vkDestroyObject(demo->pipeline); - vkDestroyObject(demo->desc_layout_chain); + vkDestroyObject(demo->pipeline_layout); vkDestroyObject(demo->desc_layout); for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { diff --git a/demos/tri.c b/demos/tri.c index 40f7f824..4bc4ed91 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -78,7 +78,7 @@ struct demo { } vertices; VkCmdBuffer cmd; // Buffer for initialization commands - VkDescriptorSetLayoutChain desc_layout_chain; + VkPipelineLayout pipeline_layout; VkDescriptorSetLayout desc_layout; VkPipeline pipeline; @@ -793,8 +793,16 @@ static void demo_prepare_descriptor_layout(struct demo *demo) &descriptor_layout, &demo->desc_layout); assert(!err); - err = vkCreateDescriptorSetLayoutChain(demo->device, - 1, &demo->desc_layout, &demo->desc_layout_chain); + const VkPipelineLayoutCreateInfo pPipelineLayoutCreateInfo = { + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + .pNext = NULL, + .descriptorSetCount = 1, + .pSetLayouts = &demo->desc_layout, + }; + + err = vkCreatePipelineLayout(demo->device, + &pPipelineLayoutCreateInfo, + &demo->pipeline_layout); assert(!err); } @@ -883,7 +891,7 @@ static void demo_prepare_pipeline(struct demo *demo) memset(&pipeline, 0, sizeof(pipeline)); pipeline.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; - pipeline.pSetLayoutChain = demo->desc_layout_chain; + pipeline.layout = demo->pipeline_layout; vi = demo->vertices.vi; @@ -1357,7 +1365,7 @@ static void demo_cleanup(struct demo *demo) vkDestroyObject(demo->depth_stencil); vkDestroyObject(demo->pipeline); - vkDestroyObject(demo->desc_layout_chain); + vkDestroyObject(demo->pipeline_layout); vkDestroyObject(demo->desc_layout); vkQueueBindObjectMemory(demo->queue, demo->vertices.buf, 0, VK_NULL_HANDLE, 0); diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index e00c8a35..e94b7676 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -521,20 +521,19 @@ static VkResult nulldrv_desc_layout_create(struct nulldrv_dev *dev, return VK_SUCCESS; } -static VkResult nulldrv_desc_layout_chain_create(struct nulldrv_dev *dev, - uint32_t setLayoutArrayCount, - const VkDescriptorSetLayout *pSetLayoutArray, - struct nulldrv_desc_layout_chain **chain_ret) +static VkResult nulldrv_pipeline_layout_create(struct nulldrv_dev *dev, + const VkPipelineLayoutCreateInfo* pCreateInfo, + struct nulldrv_pipeline_layout **pipeline_layout_ret) { - struct nulldrv_desc_layout_chain *chain; + struct nulldrv_pipeline_layout *pipeline_layout; - chain = (struct nulldrv_desc_layout_chain *) - nulldrv_base_create(dev, sizeof(*chain), - VK_DBG_OBJECT_DESCRIPTOR_SET_LAYOUT_CHAIN); - if (!chain) + pipeline_layout = (struct nulldrv_pipeline_layout *) + nulldrv_base_create(dev, sizeof(*pipeline_layout), + VK_DBG_OBJECT_PIPELINE_LAYOUT); + if (!pipeline_layout) return VK_ERROR_OUT_OF_HOST_MEMORY; - *chain_ret = chain; + *pipeline_layout_ret = pipeline_layout; return VK_SUCCESS; } @@ -1966,18 +1965,17 @@ ICD_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout( (struct nulldrv_desc_layout **) pSetLayout); } -ICD_EXPORT VkResult VKAPI vkCreateDescriptorSetLayoutChain( - VkDevice device, - uint32_t setLayoutArrayCount, - const VkDescriptorSetLayout* pSetLayoutArray, - VkDescriptorSetLayoutChain* pLayoutChain) +ICD_EXPORT VkResult VKAPI vkCreatePipelineLayout( + VkDevice device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + VkPipelineLayout* pPipelineLayout) { NULLDRV_LOG_FUNC; struct nulldrv_dev *dev = nulldrv_dev(device); - return nulldrv_desc_layout_chain_create(dev, - setLayoutArrayCount, pSetLayoutArray, - (struct nulldrv_desc_layout_chain **) pLayoutChain); + return nulldrv_pipeline_layout_create(dev, + pCreateInfo, + (struct nulldrv_pipeline_layout **) pPipelineLayout); } ICD_EXPORT VkResult VKAPI vkBeginDescriptorPoolUpdate( diff --git a/icd/nulldrv/nulldrv.h b/icd/nulldrv/nulldrv.h index 6f9895b4..06147dd0 100644 --- a/icd/nulldrv/nulldrv.h +++ b/icd/nulldrv/nulldrv.h @@ -23,7 +23,7 @@ */ #ifndef NULLDRV_H -#define NULLDRV_H +#define NULLDRV_H #include <stdlib.h> #include <stdbool.h> #include <stdint.h> @@ -142,7 +142,7 @@ struct nulldrv_desc_layout { struct nulldrv_obj obj; }; -struct nulldrv_desc_layout_chain { +struct nulldrv_pipeline_layout { struct nulldrv_obj obj; }; @@ -151,7 +151,6 @@ struct nulldrv_shader { }; - struct nulldrv_pipeline { struct nulldrv_obj obj; struct nulldrv_dev *dev; diff --git a/include/vkDbg.h b/include/vkDbg.h index bf27d52f..43a55993 100644 --- a/include/vkDbg.h +++ b/include/vkDbg.h @@ -106,7 +106,7 @@ typedef enum _VK_DBG_OBJECT_TYPE VK_DBG_OBJECT_BUFFER, VK_DBG_OBJECT_BUFFER_VIEW, VK_DBG_OBJECT_DESCRIPTOR_SET_LAYOUT, - VK_DBG_OBJECT_DESCRIPTOR_SET_LAYOUT_CHAIN, + VK_DBG_OBJECT_PIPELINE_LAYOUT, VK_DBG_OBJECT_DESCRIPTOR_POOL, VK_DBG_OBJECT_TYPE_BEGIN_RANGE = VK_DBG_OBJECT_UNKNOWN, diff --git a/include/vkLayer.h b/include/vkLayer.h index 39602e2d..70c36a98 100644 --- a/include/vkLayer.h +++ b/include/vkLayer.h @@ -88,9 +88,9 @@ typedef struct VkLayerDispatchTable_ PFN_vkStorePipeline StorePipeline; PFN_vkLoadPipeline LoadPipeline; PFN_vkLoadPipelineDerivative LoadPipelineDerivative; + PFN_vkCreatePipelineLayout CreatePipelineLayout; PFN_vkCreateSampler CreateSampler; PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout; - PFN_vkCreateDescriptorSetLayoutChain CreateDescriptorSetLayoutChain; PFN_vkBeginDescriptorPoolUpdate BeginDescriptorPoolUpdate; PFN_vkEndDescriptorPoolUpdate EndDescriptorPoolUpdate; PFN_vkCreateDescriptorPool CreateDescriptorPool; diff --git a/include/vulkan.h b/include/vulkan.h index b9fce560..98c32852 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -69,10 +69,10 @@ VK_DEFINE_SUBCLASS_HANDLE(VkColorAttachmentView, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkDepthStencilView, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkShader, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkPipeline, VkObject) +VK_DEFINE_SUBCLASS_HANDLE(VkPipelineLayout, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkSampler, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorSet, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorSetLayout, VkObject) -VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorSetLayoutChain, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorPool, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkDynamicStateObject, VkObject) VK_DEFINE_SUBCLASS_HANDLE(VkDynamicVpState, VkDynamicStateObject) @@ -844,8 +844,9 @@ typedef enum VkStructureType_ VK_STRUCTURE_TYPE_UPDATE_BUFFERS = 49, VK_STRUCTURE_TYPE_UPDATE_AS_COPY = 50, VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 51, + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 52, - VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, INSTANCE_CREATE_INFO) + VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, PIPELINE_LAYOUT_CREATE_INFO) } VkStructureType; // ------------------------------------------------------------------------------------------------ @@ -1713,7 +1714,7 @@ typedef struct VkComputePipelineCreateInfo_ const void* pNext; // Pointer to next structure VkPipelineShader cs; VkPipelineCreateFlags flags; // Pipeline creation flags - VkDescriptorSetLayoutChain setLayoutChain; + VkPipelineLayout layout; // Interface layout of the pipeline uint32_t localSizeX; uint32_t localSizeY; uint32_t localSizeZ; @@ -1858,9 +1859,17 @@ typedef struct VkGraphicsPipelineCreateInfo_ VkStructureType sType; // Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO const void* pNext; // Pointer to next structure VkPipelineCreateFlags flags; // Pipeline creation flags - VkDescriptorSetLayoutChain pSetLayoutChain; + VkPipelineLayout layout; // Interface layout of the pipeline } VkGraphicsPipelineCreateInfo; +typedef struct VkPipelineLayoutCreateInfo_ +{ + VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO + const void* pNext; // Pointer to next structure + uint32_t descriptorSetCount; // Number of descriptor sets interfaced by the pipeline + const VkDescriptorSetLayout* pSetLayouts; // Array of <setCount> number of descriptor set layout objects defining the layout of the +} VkPipelineLayoutCreateInfo; + typedef struct VkSamplerCreateInfo_ { VkStructureType sType; // Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO @@ -2128,9 +2137,9 @@ typedef VkResult (VKAPI *PFN_vkCreateComputePipeline)(VkDevice device, const VkC typedef VkResult (VKAPI *PFN_vkStorePipeline)(VkPipeline pipeline, size_t* pDataSize, void* pData); typedef VkResult (VKAPI *PFN_vkLoadPipeline)(VkDevice device, size_t dataSize, const void* pData, VkPipeline* pPipeline); typedef VkResult (VKAPI *PFN_vkLoadPipelineDerivative)(VkDevice device, size_t dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline); +typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout); typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler); typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout); -typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayoutChain)(VkDevice device, uint32_t setLayoutArrayCount, const VkDescriptorSetLayout* pSetLayoutArray, VkDescriptorSetLayoutChain* pLayoutChain); typedef VkResult (VKAPI *PFN_vkBeginDescriptorPoolUpdate)(VkDevice device, VkDescriptorUpdateMode updateMode); typedef VkResult (VKAPI *PFN_vkEndDescriptorPoolUpdate)(VkDevice device, VkCmdBuffer cmd); typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); @@ -2540,6 +2549,13 @@ VkResult VKAPI vkLoadPipelineDerivative( VkPipeline basePipeline, VkPipeline* pPipeline); +// Pipeline layout functions + +VkResult VKAPI vkCreatePipelineLayout( + VkDevice device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + VkPipelineLayout* pPipelineLayout); + // Sampler functions VkResult VKAPI vkCreateSampler( @@ -2554,12 +2570,6 @@ VkResult VKAPI vkCreateDescriptorSetLayout( const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout); -VkResult VKAPI vkCreateDescriptorSetLayoutChain( - VkDevice device, - uint32_t setLayoutArrayCount, - const VkDescriptorSetLayout* pSetLayoutArray, - VkDescriptorSetLayoutChain* pLayoutChain); - VkResult VKAPI vkBeginDescriptorPoolUpdate( VkDevice device, VkDescriptorUpdateMode updateMode); diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index ab49bce8..852eb915 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -1684,11 +1684,11 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, cons return result; } -VkResult VKAPI vkCreateDescriptorSetLayoutChain(VkDevice device, uint32_t setLayoutArrayCount, const VkDescriptorSetLayout* pSetLayoutArray, VkDescriptorSetLayoutChain* pLayoutChain) +VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) { - VkResult result = nextTable.CreateDescriptorSetLayoutChain(device, setLayoutArrayCount, pSetLayoutArray, pLayoutChain); + VkResult result = nextTable.CreatePipelineLayout(device, pCreateInfo, pPipelineLayout); if (VK_SUCCESS == result) { - // TODO : Need to capture the layout chains + // TODO : Need to capture the pipeline layout } return result; } @@ -2759,8 +2759,8 @@ VK_LAYER_EXPORT void* VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char* func return (void*) vkCreateSampler; if (!strcmp(funcName, "vkCreateDescriptorSetLayout")) return (void*) vkCreateDescriptorSetLayout; - if (!strcmp(funcName, "vkCreateDescriptorSetLayoutChain")) - return (void*) vkCreateDescriptorSetLayoutChain; + if (!strcmp(funcName, "vkCreatePipelineLayout")) + return (void*) vkCreatePipelineLayout; if (!strcmp(funcName, "vkBeginDescriptorPoolUpdate")) return (void*) vkBeginDescriptorPoolUpdate; if (!strcmp(funcName, "vkEndDescriptorPoolUpdate")) diff --git a/layers/object_track.h b/layers/object_track.h index 11dbedaf..64e95b00 100644 --- a/layers/object_track.h +++ b/layers/object_track.h @@ -67,7 +67,7 @@ typedef enum _VK_OBJECT_TYPE VkObjectTypeSemaphore, VkObjectTypeShader, VkObjectTypeDescriptorSetLayout, - VkObjectTypeDescriptorSetLayoutChain, + VkObjectTypePipelineLayout, VkObjectTypeBuffer, VkObjectTypePipeline, VkObjectTypeDevice, @@ -105,10 +105,10 @@ static const char* string_VK_OBJECT_TYPE(VK_OBJECT_TYPE type) { return "FENCE"; case VkObjectTypeDescriptorSetLayout: return "DESCRIPTOR_SET_LAYOUT"; - case VkObjectTypeDescriptorSetLayoutChain: - return "DESCRIPTOR_SET_LAYOUT_CHAIN"; case VkObjectTypeDeviceMemory: return "DEVICE_MEMORY"; + case VkObjectTypePipelineLayout: + return "PIPELINE_LAYOUT"; case VkObjectTypeQueue: return "QUEUE"; case VkObjectTypeImage: diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index cbb341a8..e3058a5d 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -985,10 +985,9 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, cons return result; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayoutChain(VkDevice device, uint32_t setLayoutArrayCount, const VkDescriptorSetLayout* pSetLayoutArray, VkDescriptorSetLayoutChain* pLayoutChain) +VK_LAYER_EXPORT VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) { - - VkResult result = nextTable.CreateDescriptorSetLayoutChain(device, setLayoutArrayCount, pSetLayoutArray, pLayoutChain); + VkResult result = nextTable.CreatePipelineLayout(device, pCreateInfo, pPipelineLayout); return result; } @@ -202,7 +202,7 @@ core = Extension( "VkSampler", "VkDescriptorSet", "VkDescriptorSetLayout", - "VkDescriptorSetLayoutChain", + "VkPipelineLayout", "VkDescriptorPool", "VkDynamicStateObject", "VkDynamicVpState", @@ -532,6 +532,11 @@ core = Extension( Param("VkPipeline", "basePipeline"), Param("VkPipeline*", "pPipeline")]), + Proto("VkResult", "CreatePipelineLayout", + [Param("VkDevice", "device"), + Param("const VkPipelineLayoutCreateInfo*", "pCreateInfo"), + Param("VkPipelineLayout*", "pPipelineLayout")]), + Proto("VkResult", "CreateSampler", [Param("VkDevice", "device"), Param("const VkSamplerCreateInfo*", "pCreateInfo"), @@ -542,12 +547,6 @@ core = Extension( Param("const VkDescriptorSetLayoutCreateInfo*", "pCreateInfo"), Param("VkDescriptorSetLayout*", "pSetLayout")]), - Proto("VkResult", "CreateDescriptorSetLayoutChain", - [Param("VkDevice", "device"), - Param("uint32_t", "setLayoutArrayCount"), - Param("const VkDescriptorSetLayout*", "pSetLayoutArray"), - Param("VkDescriptorSetLayoutChain*", "pLayoutChain")]), - Proto("VkResult", "BeginDescriptorPoolUpdate", [Param("VkDevice", "device"), Param("VkDescriptorUpdateMode", "updateMode")]), @@ -976,10 +975,10 @@ object_list = [ "VkDepthStencilView", "VkShader", "VkPipeline", + "VkPipelineLayout", "VkSampler", "VkDescriptorSet", "VkDescriptorSetLayout", - "VkDescriptorSetLayoutChain", "VkDescriptorPool", "VkDynamicStateObject", "VkCmdBuffer", |
