From: Samuel Pitoiset Date: Tue, 7 Jan 2020 07:39:39 +0000 (+0100) Subject: nir: add two new texture ops for multisample fragment color/mask fetches X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=603e6ba972dae06fe0a198fc00b6aa4a0a33d479;p=mesa.git nir: add two new texture ops for multisample fragment color/mask fetches This introduces: - nir_texop_fragment_mask_fetch (fetch a fragment mask from a compressed multisampled color surface) - nir_texop_fragment_fetch (fetch a color fragment for a particular sample at corresponding fragment mask index). These two texture operations are necessary for implementing SPV_AMD_shader_fragment_mask. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index eafd6fad855..c68fef5f1cc 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -1830,6 +1830,8 @@ typedef enum { * identical. */ nir_texop_tex_prefetch, /**< Regular texture look-up, eligible for pre-dispatch */ + nir_texop_fragment_fetch, /**< Multisample fragment color texture fetch */ + nir_texop_fragment_mask_fetch,/**< Multisample fragment mask texture fetch */ } nir_texop; typedef struct { @@ -1926,6 +1928,7 @@ nir_tex_instr_dest_size(const nir_tex_instr *instr) case nir_texop_texture_samples: case nir_texop_query_levels: case nir_texop_samples_identical: + case nir_texop_fragment_mask_fetch: return 1; default: diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c index aa9ee670a70..9a03f6eee70 100644 --- a/src/compiler/nir/nir_print.c +++ b/src/compiler/nir/nir_print.c @@ -1040,6 +1040,12 @@ print_tex_instr(nir_tex_instr *instr, print_state *state) case nir_texop_tex_prefetch: fprintf(fp, "tex (pre-dispatchable) "); break; + case nir_texop_fragment_fetch: + fprintf(fp, "fragment_fetch "); + break; + case nir_texop_fragment_mask_fetch: + fprintf(fp, "fragment_mask_fetch "); + break; default: unreachable("Invalid texture operation"); break;