From: Ian Romanick <[email protected]>
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 <[email protected]>
---
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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev