From: Dave Airlie <[email protected]>

So GL4.3 spec pretty much says glClear on integer buffers is undefined,
then we have a piglit multisample test 
ext_framebuffer_multisample-int-draw-buffers-alpha-to-coverage
that actually does undefined things but doesn't rely on the results except
not crashing.

(The tests binds 3 colorbuffers, one int, 2 float to an fbo and then calls 
glClear).

This stops llvmpipe from crashing with is worse than undefined imho, though I'm 
not
 sure if the test should be fixed, and also a new test written to show this 
undefined
behaviour outside multisamples.

Signed-off-by: Dave Airlie <[email protected]>
---
 src/gallium/drivers/llvmpipe/lp_rast.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c 
b/src/gallium/drivers/llvmpipe/lp_rast.c
index af661e9..75e1593 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast.c
@@ -142,9 +142,11 @@ lp_rast_clear_color(struct lp_rasterizer_task *task,
             if (util_format_is_pure_sint(format)) {
                util_format_write_4i(format, arg.clear_color.i, 0, &uc, 0, 0, 
0, 1, 1);
             }
-            else {
-               assert(util_format_is_pure_uint(format));
+            else if (util_format_is_pure_uint(format)) {
                util_format_write_4ui(format, arg.clear_color.ui, 0, &uc, 0, 0, 
0, 1, 1);
+            } else {
+               util_pack_color(arg.clear_color.f,
+                               scene->fb.cbufs[i]->format, &uc);
             }
 
             util_fill_box(scene->cbufs[i].map,
-- 
1.8.3.1

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to