On 14/02/17 11:19, Iago Toral wrote:
On Tue, 2017-02-14 at 09:46 +0000, Alex Smith wrote:
On 14 February 2017 at 08:45, Iago Toral <ito...@igalia.com> wrote:
On Mon, 2017-02-13 at 16:29 +0000, Lionel Landwerlin wrote:
Run this by our CI earlier today and got a few failures :
dEQP-VK.image.load_store.buffer.r8g8b8a8_snorm
dEQP-VK.image.load_store.buffer.r8g8b8a8_unorm
dEQP-VK.image.format_reinterpret.buffer.r32_uint_r8g8b8a8_snorm
dEQP-
VK.image.format_reinterpret.buffer.r8g8b8a8_uint_r8g8b8a8_unorm
dEQP-
VK.image.format_reinterpret.buffer.r8g8b8a8_sint_r8g8b8a8_snorm
dEQP-
VK.image.format_reinterpret.buffer.r8g8b8a8_sint_r8g8b8a8_unorm
dEQP-VK.image.format_reinterpret.buffer.r32_sint_r8g8b8a8_unorm
dEQP-VK.image.format_reinterpret.buffer.r32_sint_r8g8b8a8_snorm
dEQP-VK.image.format_reinterpret.buffer.r32_uint_r8g8b8a8_unorm
dEQP-
VK.image.format_reinterpret.buffer.r8g8b8a8_snorm_r8g8b8a8_unorm
dEQP-VK.image.store.buffer.r8g8b8a8_unorm
dEQP-VK.image.store.buffer.r8g8b8a8_snorm

I'm not quite sure why, it seems our backend discards format
layout
qualifiers when we have writeonly set.
For what is worth, I see a lot more regressions from
image.load_store
tests with this patch. Some of these get fixed with the second
patch,
but even then I see all of dEQP-
VK.image.load_store.*.r32g32b32a32.*
regressing (with Lionel's comment to patch 2 fixed)
These are all fixed by applying Jason's patch
"anv/apply_pipeline_layout: Set image.write_only to false" [1] before
this one. I've just tested locally and see no failures with both that
patch and this one applied. I'll include that patch when I resend the
series.
Right, I can confirm this too. The second patch in the series, even
with Lionel's comment fixed, does seem to add regressions even with
Jason's patch though.

Iago
Hi Iago,

Do you have a list of failure?

Thanks

-
Lionel

Alex

[1] https://lists.freedesktop.org/archives/mesa-dev/2017-February/144
167.html
Iago

-
Lionel

On 13/02/17 16:10, Jason Ekstrand wrote:
Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>

On Thu, Feb 9, 2017 at 8:06 AM, Alex Smith <asmith@feralinterac
tive
.com> wrote:
Allow that capability if the driver indicates that it is
supported, and
flag whether images are read-only/write-only in the
nir_variable
(based
on the NonReadable and NonWritable decorations), which
drivers
may need
to implement this.

Signed-off-by: Alex Smith <asm...@feralinteractive.com>
---
  src/compiler/spirv/nir_spirv.h     | 1 +
  src/compiler/spirv/spirv_to_nir.c  | 5 ++++-
  src/compiler/spirv/vtn_variables.c | 5 ++++-
  3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/compiler/spirv/nir_spirv.h
b/src/compiler/spirv/nir_spirv.h
index e0ebc62..e43e9b5 100644
--- a/src/compiler/spirv/nir_spirv.h
+++ b/src/compiler/spirv/nir_spirv.h
@@ -49,6 +49,7 @@ struct nir_spirv_supported_extensions {
     bool image_ms_array;
     bool tessellation;
     bool draw_parameters;
+   bool image_write_without_format;
  };

  nir_function *spirv_to_nir(const uint32_t *words, size_t
word_count,
diff --git a/src/compiler/spirv/spirv_to_nir.c
b/src/compiler/spirv/spirv_to_nir.c
index 416e12a..3f77ddf 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -2666,7 +2666,6 @@ vtn_handle_preamble_instruction(struct
vtn_builder *b, SpvOp opcode,
        case SpvCapabilityMinLod:
        case SpvCapabilityTransformFeedback:
        case SpvCapabilityStorageImageReadWithoutFormat:
-      case SpvCapabilityStorageImageWriteWithoutFormat:
           vtn_warn("Unsupported SPIR-V capability: %s",
                    spirv_capability_to_string(cap));
           break;
@@ -2702,6 +2701,10 @@ vtn_handle_preamble_instruction(struct
vtn_builder *b, SpvOp opcode,
           spv_check_supported(draw_parameters, cap);
           break;

+      case SpvCapabilityStorageImageWriteWithoutFormat:
+         spv_check_supported(image_write_without_format,
cap);
+         break;
+
        default:
           unreachable("Unhandled capability");
        }
diff --git a/src/compiler/spirv/vtn_variables.c
b/src/compiler/spirv/vtn_variables.c
index 098cfb5..d7d882e 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1054,8 +1054,12 @@ apply_var_decoration(struct
vtn_builder
*b, nir_variable *nir_var,
        assert(nir_var->constant_initializer != NULL);
        nir_var->data.read_only = true;
        break;
+   case SpvDecorationNonReadable:
+      nir_var->data.image.write_only = true;
+      break;
     case SpvDecorationNonWritable:
        nir_var->data.read_only = true;
+      nir_var->data.image.read_only = true;
        break;
     case SpvDecorationComponent:
        nir_var->data.location_frac = dec->literals[0];
@@ -1107,7 +1111,6 @@ apply_var_decoration(struct vtn_builder
*b,
nir_variable *nir_var,
     case SpvDecorationAliased:
     case SpvDecorationVolatile:
     case SpvDecorationCoherent:
-   case SpvDecorationNonReadable:
     case SpvDecorationUniform:
     case SpvDecorationStream:
     case SpvDecorationOffset:
--
2.7.4

_______________________________________________
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
_______________________________________________
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