On 28 February 2017 at 09:08, Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> 
wrote:
> Signed-off-by: Bas Nieuwenhuizen <ba...@google.com>

For the series

Reviewed-by: Dave Airlie <airl...@redhat.com>



> ---
>  src/amd/vulkan/radv_descriptor_set.c | 23 ++++++++++++++---------
>  1 file changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_descriptor_set.c 
> b/src/amd/vulkan/radv_descriptor_set.c
> index d8399574f2a..ca5b28090b9 100644
> --- a/src/amd/vulkan/radv_descriptor_set.c
> +++ b/src/amd/vulkan/radv_descriptor_set.c
> @@ -124,12 +124,6 @@ VkResult radv_CreateDescriptorSetLayout(
>                 set_layout->binding[b].buffer_offset = buffer_count;
>                 set_layout->binding[b].dynamic_offset_offset = 
> dynamic_offset_count;
>
> -               set_layout->size += binding->descriptorCount * 
> set_layout->binding[b].size;
> -               buffer_count += binding->descriptorCount * 
> set_layout->binding[b].buffer_count;
> -               dynamic_offset_count += binding->descriptorCount *
> -                       set_layout->binding[b].dynamic_offset_count;
> -
> -
>                 if (binding->pImmutableSamplers) {
>                         set_layout->binding[b].immutable_samplers = samplers;
>                         set_layout->binding[b].immutable_samplers_equal = 
> true;
> @@ -141,10 +135,20 @@ VkResult radv_CreateDescriptorSetLayout(
>                                 if 
> (memcmp(set_layout->binding[b].immutable_samplers + 4 * i,
>                                            
> set_layout->binding[b].immutable_samplers, 16) != 0)
>                                         
> set_layout->binding[b].immutable_samplers_equal = false;
> -               } else {
> -                       set_layout->binding[b].immutable_samplers = NULL;
> +
> +                       /* Don't reserve space for the samplers if they're 
> not accessed. */
> +                       if (set_layout->binding[b].immutable_samplers_equal) {
> +                               if (binding->descriptorType == 
> VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)
> +                                       set_layout->binding[b].size -= 32;
> +                               else if (binding->descriptorType == 
> VK_DESCRIPTOR_TYPE_SAMPLER)
> +                                       set_layout->binding[b].size -= 16;
> +                       }
>                 }
>
> +               set_layout->size += binding->descriptorCount * 
> set_layout->binding[b].size;
> +               buffer_count += binding->descriptorCount * 
> set_layout->binding[b].buffer_count;
> +               dynamic_offset_count += binding->descriptorCount *
> +                       set_layout->binding[b].dynamic_offset_count;
>                 set_layout->shader_stages |= binding->stageFlags;
>         }
>
> @@ -326,7 +330,8 @@ radv_descriptor_set_create(struct radv_device *device,
>         }
>
>         for (unsigned i = 0; i < layout->binding_count; ++i) {
> -               if (!layout->binding[i].immutable_samplers)
> +               if (!layout->binding[i].immutable_samplers ||
> +                   layout->binding[i].immutable_samplers_equal)
>                         continue;
>
>                 unsigned offset = layout->binding[i].offset / 4;
> --
> 2.11.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to