[Mesa-dev] [PATCH 4/4] i965/fs: Move handling of samples_identical into the switch statement
Jason Ekstrand
jason at jlekstrand.net
Tue May 3 22:00:27 UTC 2016
This is where we handle texop_texture_samples so it makes things more
consistent.
---
src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 40 +++++++++++++++-----------------
1 file changed, 19 insertions(+), 21 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index e0a76b4..c8edf07 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
@@ -3196,27 +3196,6 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
srcs[TEX_LOGICAL_SRC_LOD] = brw_imm_ud(0u);
}
- if (instr->op == nir_texop_samples_identical) {
- fs_reg dst = retype(get_nir_dest(instr->dest), BRW_REGISTER_TYPE_D);
-
- /* If mcs is an immediate value, it means there is no MCS. In that case
- * just return false.
- */
- if (srcs[TEX_LOGICAL_SRC_MCS].file == BRW_IMMEDIATE_VALUE) {
- bld.MOV(dst, brw_imm_ud(0u));
- } else if ((key_tex->msaa_16 & (1 << sampler))) {
- fs_reg tmp = vgrf(glsl_type::uint_type);
- bld.OR(tmp, srcs[TEX_LOGICAL_SRC_MCS],
- offset(srcs[TEX_LOGICAL_SRC_MCS], bld, 1));
- bld.CMP(dst, tmp, brw_imm_ud(0u), BRW_CONDITIONAL_EQ);
- } else {
- bld.CMP(dst, srcs[TEX_LOGICAL_SRC_MCS], brw_imm_ud(0u),
- BRW_CONDITIONAL_EQ);
- }
-
- return;
- }
-
enum opcode opcode;
switch (instr->op) {
case nir_texop_tex:
@@ -3271,6 +3250,25 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
bld.MOV(dst, tmp);
return;
}
+ case nir_texop_samples_identical: {
+ fs_reg dst = retype(get_nir_dest(instr->dest), BRW_REGISTER_TYPE_D);
+
+ /* If mcs is an immediate value, it means there is no MCS. In that case
+ * just return false.
+ */
+ if (srcs[TEX_LOGICAL_SRC_MCS].file == BRW_IMMEDIATE_VALUE) {
+ bld.MOV(dst, brw_imm_ud(0u));
+ } else if ((key_tex->msaa_16 & (1 << sampler))) {
+ fs_reg tmp = vgrf(glsl_type::uint_type);
+ bld.OR(tmp, srcs[TEX_LOGICAL_SRC_MCS],
+ offset(srcs[TEX_LOGICAL_SRC_MCS], bld, 1));
+ bld.CMP(dst, tmp, brw_imm_ud(0u), BRW_CONDITIONAL_EQ);
+ } else {
+ bld.CMP(dst, srcs[TEX_LOGICAL_SRC_MCS], brw_imm_ud(0u),
+ BRW_CONDITIONAL_EQ);
+ }
+ return;
+ }
default:
unreachable("unknown texture opcode");
}
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list