Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> On Thu, Feb 9, 2017 at 8:06 AM, Alex Smith <asm...@feralinteractive.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