The renderbuffer's Format field may have an alpha channel even when the underlying _BaseFormat does not. This can happen when mesa chooses to use RGBA16 for an RGB16 format, for example.
So look at both fields when deciding whether to fixup the blend factors. This test improves the results of at least the following piglit tests: EXT_frambebuffer_object/fbo-blending-formats {GL_RGB10, GL_RGB12, GL_RGB16} EXT_texture_snorm/fbo-blending-formats {GL_RGB16_SNORM, GLRGB8_SNORM, GL_RGB_SNORM} But none of these actually change from FAIL to PASS yet. The R, G, and B probe values are fixed with this commit, but the tests still fail because the alpha values are still wrong. --- Note: The test results mentioned here, (and in the following patches), expect the fixes I recently submitted to the fbo-* tests in piglit. That series consists of 5 patches starting with: [PATCH 1/3] fbo-blending-formats: Enable testing for channels with 0 bits of data. Without that series, most of these tests report a buggy PASS even without the current fixes, (even though the implementation is providing incorrect results in many cases). src/mesa/drivers/dri/i965/gen6_cc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c index fcd1794..f1ba9c2 100644 --- a/src/mesa/drivers/dri/i965/gen6_cc.c +++ b/src/mesa/drivers/dri/i965/gen6_cc.c @@ -32,6 +32,7 @@ #include "intel_batchbuffer.h" #include "main/macros.h" #include "main/enums.h" +#include "main/glformats.h" static void gen6_upload_blend_state(struct brw_context *brw) @@ -125,7 +126,8 @@ gen6_upload_blend_state(struct brw_context *brw) * not read the alpha channel, but will instead use the correct * implicit value for alpha. */ - if (_mesa_get_format_bits(rb->Format, GL_ALPHA_BITS) == 0) + if (_mesa_get_format_bits(rb->Format, GL_ALPHA_BITS) == 0 || + !_mesa_base_format_has_channel(rb->_BaseFormat, GL_TEXTURE_ALPHA_TYPE)) { srcRGB = brw_fix_xRGB_alpha(srcRGB); srcA = brw_fix_xRGB_alpha(srcA); -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev