diff options
author | Marek Olšák <[email protected]> | 2011-06-21 05:09:24 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2011-07-10 21:41:17 +0200 |
commit | bfb63b7d62ccd9618a110f9f5297f87574384058 (patch) | |
tree | 93638c1fdbbba382822cfc0f5e3fda729ecd6cf6 /src/mesa/main/pack.c | |
parent | ec6fbbe36ee198d00db6a1ae297970531186ae3c (diff) |
mesa: implement depth unpacking for GL_FLOAT_32_UNSIGNED_INT_24_8_REV
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/main/pack.c')
-rw-r--r-- | src/mesa/main/pack.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index c284c7d8d62..d42ae7bf0f4 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -4827,6 +4827,20 @@ _mesa_unpack_depth_span( struct gl_context *ctx, GLuint n, } } break; + case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: + { + GLuint i; + const GLfloat *src = (const GLfloat *)source; + for (i = 0; i < n; i++) { + GLfloat value = src[i * 2]; + if (srcPacking->SwapBytes) { + SWAP4BYTE(value); + } + depthValues[i] = value; + } + needClamp = GL_TRUE; + } + break; case GL_FLOAT: DEPTH_VALUES(GLfloat, 1*); needClamp = GL_TRUE; @@ -4903,9 +4917,18 @@ _mesa_unpack_depth_span( struct gl_context *ctx, GLuint n, zValues[i] = (GLushort) (depthValues[i] * (GLfloat) depthMax); } } + else if (dstType == GL_FLOAT) { + /* Nothing to do. depthValues is pointing to dest. */ + } + else if (dstType == GL_FLOAT_32_UNSIGNED_INT_24_8_REV) { + GLfloat *zValues = (GLfloat*) dest; + GLuint i; + for (i = 0; i < n; i++) { + zValues[i*2] = depthValues[i]; + } + } else { - ASSERT(dstType == GL_FLOAT); - /*ASSERT(depthMax == 1.0F);*/ + ASSERT(0); } free(depthTemp); |