diff options
| -rw-r--r-- | demos/cube.c | 33 | ||||
| -rw-r--r-- | demos/tri.c | 10 | ||||
| -rw-r--r-- | icd/nulldrv/nulldrv.c | 4 | ||||
| -rw-r--r-- | include/xgl.h | 16 | ||||
| -rw-r--r-- | xgl.py | 2 |
5 files changed, 39 insertions, 26 deletions
diff --git a/demos/cube.c b/demos/cube.c index 9bf56af5..ea4b12bf 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -1204,29 +1204,32 @@ void demo_prepare_cube_data_buffer(struct demo *demo) static void demo_prepare_descriptor_layout(struct demo *demo) { - const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO descriptor_layout_fs = { - .sType = XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, - .pNext = NULL, - .descriptorType = XGL_DESCRIPTOR_TYPE_SAMPLER_TEXTURE, - .count = DEMO_TEXTURE_COUNT, - .stageFlags = XGL_SHADER_STAGE_FLAGS_FRAGMENT_BIT, - .immutableSampler = XGL_NULL_HANDLE, + const XGL_DESCRIPTOR_SET_LAYOUT_BINDING layout_bindings[2] = { + [0] = { + .descriptorType = XGL_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + .count = 1, + .stageFlags = XGL_SHADER_STAGE_FLAGS_VERTEX_BIT, + .immutableSampler = XGL_NULL_HANDLE, + }, + [1] = { + .descriptorType = XGL_DESCRIPTOR_TYPE_SAMPLER_TEXTURE, + .count = DEMO_TEXTURE_COUNT, + .stageFlags = XGL_SHADER_STAGE_FLAGS_FRAGMENT_BIT, + .immutableSampler = XGL_NULL_HANDLE, + }, }; - const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO descriptor_layout_vs = { + const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO descriptor_layout = { .sType = XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, - .pNext = &descriptor_layout_fs, - .descriptorType = XGL_DESCRIPTOR_TYPE_UNIFORM_BUFFER, - .count = 1, - .stageFlags = XGL_SHADER_STAGE_FLAGS_VERTEX_BIT, - .immutableSampler = XGL_NULL_HANDLE, + .pNext = NULL, + .count = 2, + .pBinding = layout_bindings, }; - const uint32_t bind_point = 0; XGL_RESULT err; err = xglCreateDescriptorSetLayout(demo->device, XGL_SHADER_STAGE_FLAGS_ALL, &bind_point, - XGL_NULL_HANDLE, &descriptor_layout_vs, + XGL_NULL_HANDLE, &descriptor_layout, &demo->desc_layout); assert(!err); } diff --git a/demos/tri.c b/demos/tri.c index a643d75c..c0591e73 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -845,14 +845,18 @@ static void demo_prepare_vertices(struct demo *demo) static void demo_prepare_descriptor_layout(struct demo *demo) { - const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO descriptor_layout = { - .sType = XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, - .pNext = NULL, + const XGL_DESCRIPTOR_SET_LAYOUT_BINDING layout_binding = { .descriptorType = XGL_DESCRIPTOR_TYPE_SAMPLER_TEXTURE, .count = DEMO_TEXTURE_COUNT, .stageFlags = XGL_SHADER_STAGE_FLAGS_FRAGMENT_BIT, .immutableSampler = XGL_NULL_HANDLE, }; + const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO descriptor_layout = { + .sType = XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, + .pNext = NULL, + .count = 1, + .pBinding = &layout_binding, + }; const uint32_t bind_point = 0; XGL_RESULT err; diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index 1f9309e2..70dce00e 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -1887,7 +1887,7 @@ ICD_EXPORT XGL_RESULT XGLAPI xglCreateDescriptorSetLayout( XGL_FLAGS stageFlags, const uint32_t* pSetBindPoints, XGL_DESCRIPTOR_SET_LAYOUT priorSetLayout, - const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pSetLayoutInfoList, + const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_SET_LAYOUT* pSetLayout) { NULLDRV_LOG_FUNC; @@ -1895,7 +1895,7 @@ ICD_EXPORT XGL_RESULT XGLAPI xglCreateDescriptorSetLayout( struct nulldrv_desc_layout *prior_layout = nulldrv_desc_layout(priorSetLayout); return nulldrv_desc_layout_create(dev, stageFlags, pSetBindPoints, - prior_layout, pSetLayoutInfoList, + prior_layout, pCreateInfo, (struct nulldrv_desc_layout **) pSetLayout); } diff --git a/include/xgl.h b/include/xgl.h index a9314ec4..5d80dfa4 100644 --- a/include/xgl.h +++ b/include/xgl.h @@ -1815,14 +1815,20 @@ typedef struct _XGL_SHADER_CREATE_INFO XGL_FLAGS flags; // Reserved } XGL_SHADER_CREATE_INFO; -typedef struct _XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO +typedef struct _XGL_DESCRIPTOR_SET_LAYOUT_BINDING { - XGL_STRUCTURE_TYPE sType; // Must be XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO - const void* pNext; // Pointer to next structure XGL_DESCRIPTOR_TYPE descriptorType; uint32_t count; XGL_FLAGS stageFlags; // XGL_SHADER_STAGE_FLAGS XGL_SAMPLER immutableSampler; +} XGL_DESCRIPTOR_SET_LAYOUT_BINDING; + +typedef struct _XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO +{ + XGL_STRUCTURE_TYPE sType; // Must be XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO + const void* pNext; // Pointer to next structure + uint32_t count; // Number of bindings in the descriptor set layout + const XGL_DESCRIPTOR_SET_LAYOUT_BINDING* pBinding; // Array of descriptor set layout bindings } XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; typedef struct _XGL_DESCRIPTOR_TYPE_COUNT @@ -2302,7 +2308,7 @@ typedef XGL_RESULT (XGLAPI *xglStorePipelineType)(XGL_PIPELINE pipeline, size_t* typedef XGL_RESULT (XGLAPI *xglLoadPipelineType)(XGL_DEVICE device, size_t dataSize, const void* pData, XGL_PIPELINE* pPipeline); typedef XGL_RESULT (XGLAPI *xglLoadPipelineDerivativeType)(XGL_DEVICE device, size_t dataSize, const void* pData, XGL_PIPELINE basePipeline, XGL_PIPELINE* pPipeline); typedef XGL_RESULT (XGLAPI *xglCreateSamplerType)(XGL_DEVICE device, const XGL_SAMPLER_CREATE_INFO* pCreateInfo, XGL_SAMPLER* pSampler); -typedef XGL_RESULT (XGLAPI *xglCreateDescriptorSetLayoutType)(XGL_DEVICE device, XGL_FLAGS stageFlags, const uint32_t* pSetBindPoints, XGL_DESCRIPTOR_SET_LAYOUT priorSetLayout, const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pSetLayoutInfoList, XGL_DESCRIPTOR_SET_LAYOUT* pSetLayout); +typedef XGL_RESULT (XGLAPI *xglCreateDescriptorSetLayoutType)(XGL_DEVICE device, XGL_FLAGS stageFlags, const uint32_t* pSetBindPoints, XGL_DESCRIPTOR_SET_LAYOUT priorSetLayout, const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_SET_LAYOUT* pSetLayout); typedef XGL_RESULT (XGLAPI *xglBeginDescriptorPoolUpdateType)(XGL_DEVICE device, XGL_DESCRIPTOR_UPDATE_MODE updateMode); typedef XGL_RESULT (XGLAPI *xglEndDescriptorPoolUpdateType)(XGL_DEVICE device, XGL_CMD_BUFFER cmd); typedef XGL_RESULT (XGLAPI *xglCreateDescriptorPoolType)(XGL_DEVICE device, XGL_DESCRIPTOR_POOL_USAGE poolUsage, uint32_t maxSets, const XGL_DESCRIPTOR_POOL_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_POOL* pDescriptorPool); @@ -2698,7 +2704,7 @@ XGL_RESULT XGLAPI xglCreateDescriptorSetLayout( XGL_FLAGS stageFlags, // XGL_SHADER_STAGE_FLAGS const uint32_t* pSetBindPoints, XGL_DESCRIPTOR_SET_LAYOUT priorSetLayout, - const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pSetLayoutInfoList, + const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_SET_LAYOUT* pSetLayout); XGL_RESULT XGLAPI xglBeginDescriptorPoolUpdate( @@ -514,7 +514,7 @@ core = Extension( Param("XGL_FLAGS", "stageFlags"), Param("const uint32_t*", "pSetBindPoints"), Param("XGL_DESCRIPTOR_SET_LAYOUT", "priorSetLayout"), - Param("const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO*", "pSetLayoutInfoList"), + Param("const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO*", "pCreateInfo"), Param("XGL_DESCRIPTOR_SET_LAYOUT*", "pSetLayout")]), Proto("XGL_RESULT", "BeginDescriptorPoolUpdate", |
