}
static ALWAYS_INLINE void
-write_sampler_descriptor(struct radv_device *device, unsigned *dst,
- const VkDescriptorImageInfo *image_info)
+write_sampler_descriptor(unsigned *dst, VkSampler _sampler)
{
- RADV_FROM_HANDLE(radv_sampler, sampler, image_info->sampler);
-
+ RADV_FROM_HANDLE(radv_sampler, sampler, _sampler);
memcpy(dst, sampler->state, 16);
}
}
case VK_DESCRIPTOR_TYPE_SAMPLER:
if (!binding_layout->immutable_samplers_offset) {
- write_sampler_descriptor(device, ptr, writeset->pImageInfo + j);
+ const VkDescriptorImageInfo *pImageInfo = writeset->pImageInfo + j;
+ write_sampler_descriptor(ptr, pImageInfo->sampler);
} else if (copy_immutable_samplers) {
unsigned idx = writeset->dstArrayElement + j;
memcpy(ptr, samplers + 4 * idx, 16);
}
break;
case VK_DESCRIPTOR_TYPE_SAMPLER:
- if (templ->entry[i].has_sampler)
- write_sampler_descriptor(device, pDst, (struct VkDescriptorImageInfo *)pSrc);
+ if (templ->entry[i].has_sampler) {
+ const VkDescriptorImageInfo *pImageInfo = (struct VkDescriptorImageInfo *)pSrc;
+ write_sampler_descriptor(pDst, pImageInfo->sampler);
+ }
else if (cmd_buffer && templ->entry[i].immutable_samplers)
memcpy(pDst, templ->entry[i].immutable_samplers + 4 * j, 16);
break;