[Mesa-dev] [PATCH] spirv: acknowledge multisampled input attachments

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Jan 24 14:36:26 UTC 2017


Looks good :

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 24/01/17 10:00, Iago Toral Quiroga wrote:
> This avoids tons of crashes in
> dEQP-VK.pipeline.multisample_shader_builtin.sample_id.*
> dEQP-VK.pipeline.multisample_shader_builtin.sample_mask.*
> dEQP-VK.pipeline.multisample_shader_builtin.sample_position.*
>
> ---
>
> With this patch some of the tests pass, some still fail and some
> (from the sample_mask.write category) still crash for other reasons.
>
>   src/compiler/spirv/spirv_to_nir.c | 11 ++++++++---
>   1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
> index 28ab5f1..aecda17 100644
> --- a/src/compiler/spirv/spirv_to_nir.c
> +++ b/src/compiler/spirv/spirv_to_nir.c
> @@ -854,8 +854,12 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
>            val->type->access_qualifier = SpvAccessQualifierReadWrite;
>   
>         if (multisampled) {
> -         assert(dim == GLSL_SAMPLER_DIM_2D);
> -         dim = GLSL_SAMPLER_DIM_MS;
> +         if (dim == GLSL_SAMPLER_DIM_2D)
> +            dim = GLSL_SAMPLER_DIM_MS;
> +         else if (dim == GLSL_SAMPLER_DIM_SUBPASS)
> +            dim = GLSL_SAMPLER_DIM_SUBPASS_MS;
> +         else
> +            assert(!"Unsupported multisampled image type");
>         }
>   
>         val->type->image_format = translate_image_format(format);
> @@ -864,7 +868,8 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
>            val->type->type = glsl_sampler_type(dim, is_shadow, is_array,
>                                                glsl_get_base_type(sampled_type));
>         } else if (sampled == 2) {
> -         assert((dim == GLSL_SAMPLER_DIM_SUBPASS) || format);
> +         assert((dim == GLSL_SAMPLER_DIM_SUBPASS ||
> +                 dim == GLSL_SAMPLER_DIM_SUBPASS_MS) || format);
>            assert(!is_shadow);
>            val->type->type = glsl_image_type(dim, is_array,
>                                              glsl_get_base_type(sampled_type));




More information about the mesa-dev mailing list