[Mesa-dev] [PATCH] anv/apply_pipeline_layout: Set image.write_only to false

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Feb 14 16:12:24 UTC 2017


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

On 13/02/17 16:38, Jason Ekstrand wrote:
> This makes our driver robust to changes in spirv_to_nir which would set
> this flag on the variable.  Right now, our driver relies on spirv_to_nir
> *not* setting var->data.image.write_only for correctness.  Any patch
> which implements the shaderStorageImageWriteWithoutFormat will need to
> effectively revert this commit.
>
> Cc: Alex Smith <asmith at feralinteractive.com>
> ---
>   src/intel/vulkan/anv_nir_apply_pipeline_layout.c | 12 ++++++++++++
>   1 file changed, 12 insertions(+)
>
> diff --git a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
> index 8846c2e..d6b8561 100644
> --- a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
> +++ b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
> @@ -398,6 +398,18 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
>               unsigned binding = var->data.binding;
>               unsigned image_index = state.set[set].image_offsets[binding];
>   
> +            /* We have a very tight coupling between back-end compiler and
> +             * state setup which requires us to fill the image surface state
> +             * out differently if and only if the image is declared write-only.
> +             * Right now, our state setup code sets up all images as if they
> +             * are read-write.  This means that the compiler needs to see
> +             * read-only as well.
> +             *
> +             * Whenever we implement shaderStorageImageWriteWithoutFormat, we
> +             * need to delete this.
> +             */
> +            var->data.image.write_only = false;
> +
>               var->data.driver_location = shader->num_uniforms +
>                                           image_index * BRW_IMAGE_PARAM_SIZE * 4;
>            }




More information about the mesa-dev mailing list