Mesa (main): intel/vec4: Use ir_texture_opcode less in emit_texture()
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Dec 16 08:59:37 UTC 2021
Module: Mesa
Branch: main
Commit: 2729a741fc346e5a747a47570624f64bc84f5dd8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2729a741fc346e5a747a47570624f64bc84f5dd8
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Mon Dec 13 16:35:46 2021 -0800
intel/vec4: Use ir_texture_opcode less in emit_texture()
This replaces a bunch of uses of the GLSL IR ir_texture_opcode enum with
the backend opcode, in preparation for removing it altogether.
Reviewed-by: Caio Oliveira <caio.oliveira at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14191>
---
src/intel/compiler/brw_vec4_visitor.cpp | 39 ++++++++++++++++++++++++---------
1 file changed, 29 insertions(+), 10 deletions(-)
diff --git a/src/intel/compiler/brw_vec4_visitor.cpp b/src/intel/compiler/brw_vec4_visitor.cpp
index 597bf9795c2..53adb4955d6 100644
--- a/src/intel/compiler/brw_vec4_visitor.cpp
+++ b/src/intel/compiler/brw_vec4_visitor.cpp
@@ -881,8 +881,10 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
*/
inst->header_size =
(devinfo->ver < 5 ||
- inst->offset != 0 || op == ir_tg4 ||
- op == ir_texture_samples ||
+ inst->offset != 0 ||
+ opcode == SHADER_OPCODE_TG4 ||
+ opcode == SHADER_OPCODE_TG4_OFFSET ||
+ opcode == SHADER_OPCODE_SAMPLEINFO ||
is_high_sampler(sampler_reg)) ? 1 : 0;
inst->base_mrf = 2;
inst->mlen = inst->header_size;
@@ -895,11 +897,11 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
/* MRF for the first parameter */
int param_base = inst->base_mrf + inst->header_size;
- if (op == ir_txs || op == ir_query_levels) {
+ if (opcode == SHADER_OPCODE_TXS) {
int writemask = devinfo->ver == 4 ? WRITEMASK_W : WRITEMASK_X;
emit(MOV(dst_reg(MRF, param_base, lod.type, writemask), lod));
inst->mlen++;
- } else if (op == ir_texture_samples) {
+ } else if (opcode == SHADER_OPCODE_SAMPLEINFO) {
inst->dst.writemask = WRITEMASK_X;
} else {
/* Load the coordinate */
@@ -916,7 +918,9 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
brw_imm_d(0)));
}
/* Load the shadow comparator */
- if (shadow_comparator.file != BAD_FILE && op != ir_txd && (op != ir_tg4 || offset_value.file == BAD_FILE)) {
+ if (shadow_comparator.file != BAD_FILE &&
+ opcode != SHADER_OPCODE_TXD &&
+ opcode != SHADER_OPCODE_TG4_OFFSET) {
emit(MOV(dst_reg(MRF, param_base + 1, shadow_comparator.type,
WRITEMASK_X),
shadow_comparator));
@@ -924,7 +928,8 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
}
/* Load the LOD info */
- if (op == ir_tex || op == ir_txl) {
+ switch (opcode) {
+ case SHADER_OPCODE_TXL: {
int mrf, writemask;
if (devinfo->ver >= 5) {
mrf = param_base + 1;
@@ -940,9 +945,14 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
writemask = WRITEMASK_W;
}
emit(MOV(dst_reg(MRF, mrf, lod.type, writemask), lod));
- } else if (op == ir_txf) {
+ break;
+ }
+
+ case SHADER_OPCODE_TXF:
emit(MOV(dst_reg(MRF, param_base, lod.type, WRITEMASK_W), lod));
- } else if (op == ir_txf_ms) {
+ break;
+
+ case SHADER_OPCODE_TXF_CMS:
emit(MOV(dst_reg(MRF, param_base + 1, sample_index.type, WRITEMASK_X),
sample_index));
if (devinfo->ver >= 7) {
@@ -955,7 +965,9 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
mcs));
}
inst->mlen++;
- } else if (op == ir_txd) {
+ break;
+
+ case SHADER_OPCODE_TXD: {
const brw_reg_type type = lod.type;
if (devinfo->ver >= 5) {
@@ -983,7 +995,10 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
emit(MOV(dst_reg(MRF, param_base + 2, type, WRITEMASK_XYZ), lod2));
inst->mlen += 2;
}
- } else if (op == ir_tg4 && offset_value.file != BAD_FILE) {
+ break;
+ }
+
+ case SHADER_OPCODE_TG4_OFFSET:
if (shadow_comparator.file != BAD_FILE) {
emit(MOV(dst_reg(MRF, param_base, shadow_comparator.type, WRITEMASK_W),
shadow_comparator));
@@ -992,6 +1007,10 @@ vec4_visitor::emit_texture(ir_texture_opcode op,
emit(MOV(dst_reg(MRF, param_base + 1, glsl_type::ivec2_type, WRITEMASK_XY),
offset_value));
inst->mlen++;
+ break;
+
+ default:
+ break;
}
}
More information about the mesa-commit
mailing list