From: Jason Ekstrand Date: Tue, 3 May 2016 19:34:51 +0000 (-0700) Subject: i965/fs: Implement the new NIR MCS texturing X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=50e5e1f747ad820eb491e093600a4bde9c13efba;p=mesa.git i965/fs: Implement the new NIR MCS texturing Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp index 4648c58f0c4..2c22b4f74e7 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp @@ -3706,6 +3706,7 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr) switch (instr->op) { case nir_texop_txf: case nir_texop_txf_ms: + case nir_texop_txf_ms_mcs: case nir_texop_samples_identical: srcs[TEX_LOGICAL_SRC_COORDINATE] = retype(src, BRW_REGISTER_TYPE_D); break; @@ -3780,13 +3781,19 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr) break; } + case nir_tex_src_ms_mcs: + assert(instr->op == nir_texop_txf_ms); + srcs[TEX_LOGICAL_SRC_MCS] = retype(src, BRW_REGISTER_TYPE_D); + break; + default: unreachable("unknown texture source"); } } - if (instr->op == nir_texop_txf_ms || - instr->op == nir_texop_samples_identical) { + if (srcs[TEX_LOGICAL_SRC_MCS].file == BAD_FILE && + (instr->op == nir_texop_txf_ms || + instr->op == nir_texop_samples_identical)) { if (devinfo->gen >= 7 && key_tex->compressed_multisample_layout_mask & (1 << texture)) { srcs[TEX_LOGICAL_SRC_MCS] = @@ -3832,6 +3839,9 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr) else opcode = SHADER_OPCODE_TXF_CMS_LOGICAL; break; + case nir_texop_txf_ms_mcs: + opcode = SHADER_OPCODE_TXF_MCS_LOGICAL; + break; case nir_texop_query_levels: case nir_texop_txs: opcode = SHADER_OPCODE_TXS_LOGICAL;