Skip to content

Commit 83cf9a9

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

4 files changed

Lines changed: 21 additions & 9 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: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,7 +1042,13 @@ pl_graphics_create_bind_group_layout(plDevice* ptDevice, const plBindGroupLayout
10421042
.stageFlags = pl_vulkan_shader_stage_flags(ptDesc->atBufferBindings[i].eStages),
10431043
.pImmutableSamplers = NULL
10441044
};
1045-
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
1045+
1046+
if (ptDevice->tInfo.eCapabilities & PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING)
1047+
{
1048+
atDescriptorSetLayoutFlags[uCurrentBinding] |= VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
1049+
}
1050+
else
1051+
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
10461052
atDescriptorSetLayoutBindings[uCurrentBinding++] = tBinding;
10471053
}
10481054

@@ -1068,12 +1074,12 @@ pl_graphics_create_bind_group_layout(plDevice* ptDevice, const plBindGroupLayout
10681074
else if (tBinding.descriptorCount == 0)
10691075
tBinding.descriptorCount = 1;
10701076

1071-
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
1072-
if (ptDesc->atTextureBindings[i].bNonUniformIndexing)
1077+
if (ptDevice->tInfo.eCapabilities & PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING)
10731078
{
10741079
atDescriptorSetLayoutFlags[uCurrentBinding] |= VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
1075-
bHasVariableDescriptors = true;
10761080
}
1081+
else
1082+
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
10771083
atDescriptorSetLayoutBindings[uCurrentBinding++] = tBinding;
10781084
}
10791085

@@ -1088,7 +1094,12 @@ pl_graphics_create_bind_group_layout(plDevice* ptDevice, const plBindGroupLayout
10881094
.pImmutableSamplers = NULL
10891095
};
10901096

1091-
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
1097+
if (ptDevice->tInfo.eCapabilities & PL_DEVICE_CAPABILITY_BIND_GROUP_INDEXING)
1098+
{
1099+
atDescriptorSetLayoutFlags[uCurrentBinding] |= VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
1100+
}
1101+
else
1102+
atDescriptorSetLayoutFlags[uCurrentBinding] = 0;
10921103
atDescriptorSetLayoutBindings[uCurrentBinding++] = tBinding;
10931104
}
10941105

@@ -3409,6 +3420,9 @@ pl_graphics_enumerate_devices(plDeviceInfo *atDeviceInfo, uint32_t* puDeviceCoun
34093420
// binding flags for textures, uniforms, and buffers
34103421
// are required for our extension
34113422
if (tDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing &&
3423+
tDescriptorIndexingFeatures.descriptorBindingUniformBufferUpdateAfterBind &&
3424+
tDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind &&
3425+
tDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind &&
34123426
tDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind)
34133427
{
34143428
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};

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)