diff options
author | Jason Ekstrand <[email protected]> | 2016-05-04 15:52:50 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2016-05-10 15:31:50 -0700 |
commit | 4f4f393bf303887e1dbedf495780f41f6a313a92 (patch) | |
tree | d1253ba591f4f248b581d5557fb82912a43beff7 /src | |
parent | 203c786a73847fb07d805c4cc799b7c7d028695c (diff) |
meta/blit: Don't blend integer values during MSAA resolves
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/common/meta_blit.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mesa/drivers/common/meta_blit.c b/src/mesa/drivers/common/meta_blit.c index 6761238b014..20d321579d5 100644 --- a/src/mesa/drivers/common/meta_blit.c +++ b/src/mesa/drivers/common/meta_blit.c @@ -458,8 +458,17 @@ setup_glsl_msaa_blit_shader(struct gl_context *ctx, int step; 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"; + /* From the OpenGL ES 3.2 spec section 16.2.1: + * + * "If the source formats are integer types or stencil values, + * a single sample's value is selected for each pixel." + * + * The OpenGL 4.4 spec contains exactly the same language. + * + * We can accomplish this by making the merge function return just + * one of the two samples. The compiler should do the rest. + */ + merge_function = "gvec4 merge(gvec4 a, gvec4 b) { return a; }\n"; } else { /* The divide will happen at the end for floats. */ merge_function = |