diff options
author | Jordan Justen <[email protected]> | 2013-01-02 22:32:47 -0800 |
---|---|---|
committer | Jordan Justen <[email protected]> | 2013-01-12 01:46:02 -0800 |
commit | 53e0f32efea2e3ef2cb725f84db5f3dfe4cad7f2 (patch) | |
tree | af7f80f3076923ca8d6eff6841740973350b3005 /src | |
parent | f1c5b5d15e241b3a91eb110d47394e0c016012f2 (diff) |
texstore argb2101010: merge GL_RGBA and GL_RGB cases
Signed-off-by: Jordan Justen <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/main/texstore.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index 7511509377e..a5c7712e095 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -1714,18 +1714,20 @@ _mesa_texstore_argb2101010(TEXSTORE_PARAMS) srcPacking, ctx->_ImageTransferState); const GLfloat *src = tempImage; + const GLushort aMask = (srcFormat == GL_RGB) ? 0xffff : 0; GLint img, row, col; if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { GLubyte *dstRow = dstSlices[img]; - if (baseInternalFormat == GL_RGBA) { + if (baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB) { for (row = 0; row < srcHeight; row++) { GLuint *dstUI = (GLuint *) dstRow; for (col = 0; col < srcWidth; col++) { GLushort a,r,g,b; UNCLAMPED_FLOAT_TO_USHORT(a, src[ACOMP]); + a = a | aMask; UNCLAMPED_FLOAT_TO_USHORT(r, src[RCOMP]); UNCLAMPED_FLOAT_TO_USHORT(g, src[GCOMP]); UNCLAMPED_FLOAT_TO_USHORT(b, src[BCOMP]); @@ -1734,20 +1736,6 @@ _mesa_texstore_argb2101010(TEXSTORE_PARAMS) } dstRow += dstRowStride; } - } else if (baseInternalFormat == GL_RGB) { - for (row = 0; row < srcHeight; row++) { - GLuint *dstUI = (GLuint *) dstRow; - for (col = 0; col < srcWidth; col++) { - GLushort r,g,b; - - UNCLAMPED_FLOAT_TO_USHORT(r, src[RCOMP]); - UNCLAMPED_FLOAT_TO_USHORT(g, src[GCOMP]); - UNCLAMPED_FLOAT_TO_USHORT(b, src[BCOMP]); - dstUI[col] = PACK_COLOR_2101010_US(0xffff, r, g, b); - src += 4; - } - dstRow += dstRowStride; - } } else { ASSERT(0); } |