Skip to content

Commit e309fee

Browse files
committed
chore: remove "bNonUniformIndexing" from plTextureBinding
1 parent 4216fc8 commit e309fee

5 files changed

Lines changed: 23 additions & 10 deletions

File tree

extensions/pl_graphics_ext.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -898,7 +898,6 @@ typedef struct _plTextureBinding
898898
uint32_t uSlot;
899899
uint32_t uDescriptorCount; // 0 - will become 1
900900
plShaderStageFlags eStages;
901-
bool bNonUniformIndexing; // only available if device capability has PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING
902901
} plTextureBinding;
903902

904903
typedef struct _plBufferBinding

extensions/pl_graphics_vulkan.c

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,6 @@ pl_graphics_create_bind_group_layout(plDevice* ptDevice, const plBindGroupLayout
10281028
const uint32_t uDescriptorBindingCount = ptLayout->_uTextureBindingCount + ptLayout->_uBufferBindingCount + ptLayout->_uSamplerBindingCount;
10291029
VkDescriptorSetLayoutBinding *atDescriptorSetLayoutBindings = pl_temp_allocator_alloc(&gptGraphics->tTempAllocator, uDescriptorBindingCount * sizeof(VkDescriptorSetLayoutBinding));
10301030
VkDescriptorBindingFlagsEXT *atDescriptorSetLayoutFlags = pl_temp_allocator_alloc(&gptGraphics->tTempAllocator, uDescriptorBindingCount * sizeof(VkDescriptorBindingFlagsEXT));
1031-
bool bHasVariableDescriptors = false;
10321031
ptLayout->_uDescriptorCount = 1;
10331032

10341033
// buffer bindings
@@ -1042,7 +1041,11 @@ pl_graphics_create_bind_group_layout(plDevice* ptDevice, const plBindGroupLayout
10421041
.stageFlags = pl_vulkan_shader_stage_flags(ptDesc->atBufferBindings[i].eStages),
10431042
.pImmutableSamplers = NULL
10441043
};
1044+
10451045
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
1046+
if (ptDevice->tInfo.eCapabilities & PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING)
1047+
atDescriptorSetLayoutFlags[uCurrentBinding] |= VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
1048+
10461049
atDescriptorSetLayoutBindings[uCurrentBinding++] = tBinding;
10471050
}
10481051

@@ -1056,24 +1059,30 @@ pl_graphics_create_bind_group_layout(plDevice* ptDevice, const plBindGroupLayout
10561059
.pImmutableSamplers = NULL
10571060
};
10581061

1062+
bool bUpdateAvailable = false;
10591063
if (ptDesc->atTextureBindings[i].eType == PL_TEXTURE_BINDING_TYPE_SAMPLED)
1064+
{
10601065
tBinding.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
1066+
bUpdateAvailable = true;
1067+
}
10611068
else if (ptDesc->atTextureBindings[i].eType == PL_TEXTURE_BINDING_TYPE_INPUT_ATTACHMENT)
10621069
tBinding.descriptorType = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
10631070
else if (ptDesc->atTextureBindings[i].eType == PL_TEXTURE_BINDING_TYPE_STORAGE)
1071+
{
1072+
bUpdateAvailable = true;
10641073
tBinding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
1074+
}
10651075

10661076
if (tBinding.descriptorCount > 1)
10671077
ptLayout->_uDescriptorCount = tBinding.descriptorCount;
10681078
else if (tBinding.descriptorCount == 0)
10691079
tBinding.descriptorCount = 1;
10701080

10711081
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
1072-
if (ptDesc->atTextureBindings[i].bNonUniformIndexing)
1073-
{
1082+
if (bUpdateAvailable && ptDevice->tInfo.eCapabilities & PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING)
10741083
atDescriptorSetLayoutFlags[uCurrentBinding] |= VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
1075-
bHasVariableDescriptors = true;
1076-
}
1084+
1085+
10771086
atDescriptorSetLayoutBindings[uCurrentBinding++] = tBinding;
10781087
}
10791088

@@ -1089,6 +1098,9 @@ pl_graphics_create_bind_group_layout(plDevice* ptDevice, const plBindGroupLayout
10891098
};
10901099

10911100
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
1101+
if (ptDevice->tInfo.eCapabilities & PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING)
1102+
atDescriptorSetLayoutFlags[uCurrentBinding] |= VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
1103+
10921104
atDescriptorSetLayoutBindings[uCurrentBinding++] = tBinding;
10931105
}
10941106

@@ -3409,6 +3421,9 @@ pl_graphics_enumerate_devices(plDeviceInfo *atDeviceInfo, uint32_t* puDeviceCoun
34093421
// binding flags for textures, uniforms, and buffers
34103422
// are required for our extension
34113423
if (tDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing &&
3424+
tDescriptorIndexingFeatures.descriptorBindingUniformBufferUpdateAfterBind &&
3425+
tDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind &&
3426+
tDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind &&
34123427
tDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind)
34133428
{
34143429
atDeviceInfo[i].eCapabilities |= PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING;

extensions/pl_shader_variant_ext.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1208,7 +1208,6 @@ pl__shader_tools_bind_group_layout_desc(plJsonObject* ptBindGroupLayout)
12081208
{
12091209
plJsonObject* ptBinding = pl_json_member_by_index(ptTextureBindings, j);
12101210
tDesc.atTextureBindings[j].uSlot = pl_json_uint_member(ptBinding, "uSlot", 0);
1211-
tDesc.atTextureBindings[j].bNonUniformIndexing = pl_json_bool_member(ptBinding, "bNonUniformIndexing", false);
12121211
tDesc.atTextureBindings[j].uDescriptorCount = pl_json_uint_member(ptBinding, "uDescriptorCount", 0);
12131212

12141213
char acTypeBuffer[64] = {0};

extensions/pl_starter_ext.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1369,7 +1369,7 @@ pl_starter_create_texture(const plTextureDesc* ptDesc, const void* pData, uint64
13691369
const plBufferImageCopy tBufferImageCopy = {
13701370
.uImageWidth = (uint32_t)ptDesc->tDimensions.x,
13711371
.uImageHeight = (uint32_t)ptDesc->tDimensions.y,
1372-
.uImageDepth = 1,
1372+
.uImageDepth = (uint32_t)ptDesc->tDimensions.z,
13731373
.uLayerCount = 1
13741374
};
13751375

shaders/shaders.pls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
{ "uSlot": 7, "eStages": ["PL_SHADER_STAGE_FRAGMENT", "PL_SHADER_STAGE_VERTEX"] }
1616
],
1717
"atTextureBindings": [
18-
{ "uSlot": 8, "eType": "PL_TEXTURE_BINDING_TYPE_SAMPLED", "bNonUniformIndexing": true, "uDescriptorCount": 4096, "eStages": ["PL_SHADER_STAGE_FRAGMENT", "PL_SHADER_STAGE_VERTEX"]},
19-
{ "uSlot": 4104, "eType": "PL_TEXTURE_BINDING_TYPE_SAMPLED", "bNonUniformIndexing": true, "uDescriptorCount": 4096, "eStages": ["PL_SHADER_STAGE_FRAGMENT", "PL_SHADER_STAGE_VERTEX"]}
18+
{ "uSlot": 8, "eType": "PL_TEXTURE_BINDING_TYPE_SAMPLED", "uDescriptorCount": 4096, "eStages": ["PL_SHADER_STAGE_FRAGMENT", "PL_SHADER_STAGE_VERTEX"]},
19+
{ "uSlot": 4104, "eType": "PL_TEXTURE_BINDING_TYPE_SAMPLED", "uDescriptorCount": 4096, "eStages": ["PL_SHADER_STAGE_FRAGMENT", "PL_SHADER_STAGE_VERTEX"]}
2020
]
2121
},
2222
{

0 commit comments

Comments
 (0)