[Mesa-dev] [PATCH] spirv: Implicitly set missing NonWriteable decoration

Jason Ekstrand jason at jlekstrand.net
Mon Jul 2 15:02:51 UTC 2018


This should be fixed in upstream dxvk so let's not put the hack in mesa:

https://github.com/doitsujin/dxvk/issues/460

On Wed, Jun 27, 2018 at 6:25 PM, Jason Ekstrand <jason at jlekstrand.net>
wrote:

> This works around rendering issues in Skyrim caused by DXVK missing a
> decoration.
> ---
>  src/compiler/spirv/vtn_variables.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_
> variables.c
> index 574f422ceab..24b278e17fd 100644
> --- a/src/compiler/spirv/vtn_variables.c
> +++ b/src/compiler/spirv/vtn_variables.c
> @@ -1752,8 +1752,24 @@ vtn_create_variable(struct vtn_builder *b, struct
> vtn_value *val,
>        var->var->data.descriptor_set = var->descriptor_set;
>        var->var->data.index = var->input_attachment_index;
>
> -      if (glsl_type_is_image(without_array->type))
> +      if (glsl_type_is_image(without_array->type)) {
>           var->var->data.image.format = without_array->image_format;
> +
> +         /* The requirement that the NonReadable decoration be set was
> added
> +          * as a clarification to the Vulkan spec in version 1.1.76 and
> not
> +          * all apps respect it.  Setting it implicitly inside
> spirv_to_nir
> +          * fixes rendering issues in Skyrim on DXVK as of June 27, 2018.
> +          */
> +         if (var->var->data.image.format == 0 &&
> +             !var->var->data.image.write_only &&
> +             !b->options->caps.image_read_without_format) {
> +            vtn_warn("Image variable created an unknown format and
> without "
> +                     "the NonReadable decoration set but the driver does
> not "
> +                     "support shaderStorageImageReadWithoutFormat.
> Setting "
> +                     "the decoration implicitly to work around the
> problem.");
> +            var->var->data.image.write_only = true;
> +         }
> +      }
>     }
>
>     if (var->mode == vtn_variable_mode_local) {
> --
> 2.17.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180702/9e736e38/attachment.html>


More information about the mesa-dev mailing list