entry->offset = offsetof(struct zink_context, di.ubos[stage][index]);
entry->stride = sizeof(VkDescriptorBufferInfo);
break;
+ case VK_DESCRIPTOR_TYPE_SAMPLER:
+ case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
entry->offset = offsetof(struct zink_context, di.textures[stage][index]);
entry->stride = sizeof(VkDescriptorImageInfo);
return !!sizes[ZDS_INDEX_UBO].descriptorCount;
case ZINK_DESCRIPTOR_TYPE_SAMPLER_VIEW:
return !!sizes[ZDS_INDEX_COMBINED_SAMPLER].descriptorCount +
- !!sizes[ZDS_INDEX_UNIFORM_TEXELS].descriptorCount;
+ !!sizes[ZDS_INDEX_UNIFORM_TEXELS].descriptorCount +
+ !!sizes[ZDS_INDEX_SAMPLER].descriptorCount;
case ZINK_DESCRIPTOR_TYPE_SSBO:
return !!sizes[ZDS_INDEX_STORAGE_BUFFER].descriptorCount;
case ZINK_DESCRIPTOR_TYPE_IMAGE:
case ZINK_DESCRIPTOR_TYPE_SAMPLER_VIEW:
return !!sizes[ZDS_INDEX_COMP_COMBINED_SAMPLER].descriptorCount +
!!sizes[ZDS_INDEX_COMP_UNIFORM_TEXELS].descriptorCount +
+ !!sizes[ZDS_INDEX_COMP_SAMPLER].descriptorCount +
!!sizes[ZDS_INDEX_COMP_STORAGE_IMAGE].descriptorCount +
!!sizes[ZDS_INDEX_COMP_STORAGE_TEXELS].descriptorCount;
case ZINK_DESCRIPTOR_TYPE_SSBO:
uint8_t has_bindings = 0;
unsigned push_count = 0;
uint16_t num_type_sizes[ZINK_DESCRIPTOR_BASE_TYPES];
- VkDescriptorPoolSize sizes[6] = {0}; //zink_descriptor_size_index
+ VkDescriptorPoolSize sizes[ZDS_INDEX_MAX] = {0}; //zink_descriptor_size_index
struct zink_shader **stages;
if (pg->is_compute)
zink_descriptor_type_to_size_idx(desc_type);
/* some sets can have multiple descriptor types: ensure the size arrays for these types are contiguous for creating the pool key */
VkDescriptorPoolSize *sz = &sizes[idx];
- VkDescriptorPoolSize sz2[4];
+ VkDescriptorPoolSize sz2[5];
if (screen->compact_descriptors || (pg->is_compute && stages[0]->nir->info.stage == MESA_SHADER_KERNEL)) {
unsigned found = 0;
while (found < num_type_sizes[desc_type]) {
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
return ZDS_INDEX_UBO;
+ case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
return ZDS_INDEX_COMBINED_SAMPLER;
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
return ZDS_INDEX_UNIFORM_TEXELS;
+ case VK_DESCRIPTOR_TYPE_SAMPLER:
+ return ZDS_INDEX_SAMPLER;
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
return ZDS_INDEX_STORAGE_BUFFER;
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
return ZDS_INDEX_COMP_UBO;
+ case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
return ZDS_INDEX_COMP_COMBINED_SAMPLER;
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
return ZDS_INDEX_COMP_UNIFORM_TEXELS;
+ case VK_DESCRIPTOR_TYPE_SAMPLER:
+ return ZDS_INDEX_COMP_SAMPLER;
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
return ZDS_INDEX_COMP_STORAGE_BUFFER;
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
return ZINK_DESCRIPTOR_TYPE_UBO;
+ case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
+ case VK_DESCRIPTOR_TYPE_SAMPLER:
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
return ZINK_DESCRIPTOR_TYPE_SAMPLER_VIEW;
ZDS_INDEX_UBO,
ZDS_INDEX_COMBINED_SAMPLER,
ZDS_INDEX_UNIFORM_TEXELS,
+ ZDS_INDEX_SAMPLER,
ZDS_INDEX_STORAGE_BUFFER,
ZDS_INDEX_STORAGE_IMAGE,
ZDS_INDEX_STORAGE_TEXELS,
+ ZDS_INDEX_MAX,
};
/* indexing for descriptor template management in COMPACT mode */
ZDS_INDEX_COMP_STORAGE_BUFFER,
ZDS_INDEX_COMP_COMBINED_SAMPLER,
ZDS_INDEX_COMP_UNIFORM_TEXELS,
+ ZDS_INDEX_COMP_SAMPLER,
ZDS_INDEX_COMP_STORAGE_IMAGE,
ZDS_INDEX_COMP_STORAGE_TEXELS,
};