swrast: fix float->uint conversion of gl_FragDepth
authorBrian Paul <brianp@vmware.com>
Wed, 19 Oct 2011 15:29:38 +0000 (09:29 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 19 Oct 2011 15:32:30 +0000 (09:32 -0600)
Using IROUND() to convert a float depth value to a 32-bit uint Z value.
didn't work (it returns a signed value).  Just use a cast instead

Fixes piglit fbo-depth-array failure with swrast.

Note: this is a candidate for the 7.11 branch.

src/mesa/swrast/s_fragprog.c

index 7f205a200aff94bec787dad0b64fa30d02c87344..1caa0ebc22697a94a217e873c14d3f6b85cf95e5 100644 (file)
@@ -237,7 +237,8 @@ run_program(struct gl_context *ctx, SWspan *span, GLuint start, GLuint end)
                else if (depth >= 1.0)
                   span->array->z[i] = ctx->DrawBuffer->_DepthMax;
                else
-                  span->array->z[i] = IROUND(depth * ctx->DrawBuffer->_DepthMaxF);
+                  span->array->z[i] =
+                     (GLuint) (depth * ctx->DrawBuffer->_DepthMaxF + 0.5F);
             }
          }
          else {