diff options
author | Brian Paul <brianp@vmware.com> | 2013-11-07 19:01:39 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2013-11-12 16:47:50 -0800 |
commit | 69d5778b369f13e3ec714eec6e5d37e516dc0796 (patch) | |
tree | c5f6be27964a6d74516b0119b0ad32451cf87770 | |
parent | 9b8c5847e61e7e6d4f6411606055ba608710cac8 (diff) |
osmesa: fix broken triangle/line drawing when using float color buffer
Doesn't seem to help with bug 71363 but it fixed a failure I found in
my testing.
Cc: "9.2" <mesa-stable@lists.freedesktop.org>
Cc: "10.0" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit a66a008b17872f3eab91b7d04dd70e4537bdb627)
-rw-r--r-- | src/mesa/drivers/osmesa/osmesa.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index 102001edfa0..6f6f824b462 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -197,6 +197,14 @@ osmesa_choose_line_function( struct gl_context *ctx ) const OSMesaContext osmesa = OSMESA_CONTEXT(ctx); const SWcontext *swrast = SWRAST_CONTEXT(ctx); + if (ctx->DrawBuffer && + ctx->DrawBuffer->Visual.redBits == 32) { + /* the special-case line functions in this file don't work + * for float color channels. + */ + return NULL; + } + if (ctx->RenderMode != GL_RENDER) return NULL; if (ctx->Line.SmoothFlag) return NULL; if (ctx->Texture._EnabledUnits) return NULL; @@ -298,6 +306,14 @@ osmesa_choose_triangle_function( struct gl_context *ctx ) const OSMesaContext osmesa = OSMESA_CONTEXT(ctx); const SWcontext *swrast = SWRAST_CONTEXT(ctx); + if (ctx->DrawBuffer && + ctx->DrawBuffer->Visual.redBits == 32) { + /* the special-case triangle functions in this file don't work + * for float color channels. + */ + return (swrast_tri_func) NULL; + } + if (ctx->RenderMode != GL_RENDER) return (swrast_tri_func) NULL; if (ctx->Polygon.SmoothFlag) return (swrast_tri_func) NULL; if (ctx->Polygon.StippleFlag) return (swrast_tri_func) NULL; |