From: Ian Romanick <ian.d.roman...@intel.com> The GLSL spec says:
"The shift operators (<<) and (>>).... One operand can be signed while the other is unsigned. In all cases, the resulting type will be the same type as the left operand. If the first operand is a scalar, the second operand has to be a scalar as well. If the first operand is a vector, the second operand must be a scalar or a vector, and the result is computed component-wise." This should compute the same value since the shift count is the literal 1. We still need separate versions of the function because of the type rulse fo the bit-wise and operator. Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> --- src/mesa/drivers/common/meta_blit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/drivers/common/meta_blit.c b/src/mesa/drivers/common/meta_blit.c index 1d40199..2e45231 100644 --- a/src/mesa/drivers/common/meta_blit.c +++ b/src/mesa/drivers/common/meta_blit.c @@ -474,7 +474,7 @@ setup_glsl_msaa_blit_shader(struct gl_context *ctx, if (src_datatype == GL_INT || src_datatype == GL_UNSIGNED_INT) { merge_function = - "gvec4 merge(gvec4 a, gvec4 b) { return (a >> gvec4(1)) + (b >> gvec4(1)) + (a & b & gvec4(1)); }\n"; + "gvec4 merge(gvec4 a, gvec4 b) { return (a >> 1) + (b >> 1) + (a & b & gvec4(1)); }\n"; } else { /* The divide will happen at the end for floats. */ merge_function = -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev