From: Francisco Jerez Date: Thu, 28 Nov 2013 06:21:45 +0000 (-0800) Subject: i965/vec4: Fix confusion between SWIZZLE and BRW_SWIZZLE macros. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b424da4be07ab8d34986e6f3824c679b623df952;p=mesa.git i965/vec4: Fix confusion between SWIZZLE and BRW_SWIZZLE macros. Most of the VEC4 back-end agrees on src_reg::swizzle being one of the BRW_SWIZZLE macros defined in brw_reg.h, except in two places where we use Mesa's SWIZZLE macros. There is even a doxygen comment saying that Mesa's macros are the right ones. They are incompatible swizzle representations (3 bits vs. 2 bits per component), and the code using Mesa's works by pure luck. Fix it. Reviewed-by: Matt Turner Reviewed-by: Paul Berry --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 920508118b4..dd23ed48fe1 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -76,7 +76,7 @@ src_reg::src_reg(register_file file, int reg, const glsl_type *type) if (type && (type->is_scalar() || type->is_vector() || type->is_matrix())) this->swizzle = swizzle_for_size(type->vector_elements); else - this->swizzle = SWIZZLE_XYZW; + this->swizzle = BRW_SWIZZLE_XYZW; } /** Generic unset register constructor. */ diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index 1cf74dbbb0b..cfee16518b5 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -135,7 +135,7 @@ public: explicit src_reg(dst_reg reg); - GLuint swizzle; /**< SWIZZLE_XYZW swizzles from Mesa. */ + GLuint swizzle; /**< BRW_SWIZZLE_XYZW macros from brw_reg.h. */ bool negate; bool abs; diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index d5163c78a7b..3bdb2423215 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -473,14 +473,14 @@ vec4_visitor::emit_pack_half_2x16(dst_reg dst, src_reg src0) /* Give the write-channels of dst the form: * 0xhhhh0000 */ - tmp_src.swizzle = SWIZZLE_Y; + tmp_src.swizzle = BRW_SWIZZLE_YYYY; emit(SHL(dst, tmp_src, src_reg(16u))); /* Finally, give the write-channels of dst the form of packHalf2x16's * output: * 0xhhhhllll */ - tmp_src.swizzle = SWIZZLE_X; + tmp_src.swizzle = BRW_SWIZZLE_XXXX; emit(OR(dst, src_reg(dst), tmp_src)); }