summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mueller <MarkKMueller@gmail.com>2013-11-08 19:32:02 -0800
committerMark Mueller <MarkKMueller@gmail.com>2013-11-08 19:32:02 -0800
commit25c326d340b28135ec630bb1d1bce16061245958 (patch)
tree22a847447902e7715b5591d9d73582a6a9810895
parentf58ce7e06f0908005393a673a64d46fbb2db8fa5 (diff)
smurf commit on new gl_formats, maybe.
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp_blit.cpp73
-rw-r--r--src/mesa/main/formats.c390
-rw-r--r--src/mesa/main/formats.h69
-rw-r--r--src/mesa/main/texformat.h2
4 files changed, 371 insertions, 163 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index ccf82530de..5bb9888ac2 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -370,10 +370,16 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw,
return false;
}
+ if (!brw->ctx.Driver.AllocTextureImageBuffer(&brw->ctx, dst_image)) {
+ DBG("%s: AllocTextureImageBuffer failed\n", __FUNCTION__);
+ return false;
+ }
+
/* get pointer to src pixels (may be in a pbo which we'll map here) */
const GLvoid *src =
_mesa_validate_pbo_teximage(&brw->ctx, dims, width, height, 1,
format, type, src_pixels, packing, "glTexImage");
+
if (!src) {
return true;
}
@@ -389,10 +395,11 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw,
/*
* Come up with a close match to the source format for the texture cache
*/
- gl_format cacheTexFormat = _mesa_choose_cached_tex_format(&brw->ctx, dst_image->TexObject->Target, format, type);
+ gl_format cacheTexFormat = _mesa_choose_cached_tex_format(&brw->ctx, format, type);
- _mesa_debug(&brw->ctx, "%s: Cache Texture Format: %s, Target Format: %s\n",
- __FUNCTION__, _mesa_get_format_name(cacheTexFormat), _mesa_get_format_name(dst_image->TexFormat));
+ _mesa_debug(&brw->ctx, "%s: Cache Texture Format: %s, Target Format: %s, Internal Format: 0x%x\n",
+ __FUNCTION__, _mesa_get_format_name(cacheTexFormat), _mesa_get_format_name(dst_image->TexFormat),
+ dst_image->InternalFormat);
if (MESA_FORMAT_NONE == cacheTexFormat || MESA_FORMAT_COUNT <= cacheTexFormat) {
_mesa_debug(&brw->ctx, "%s: Blorp doesn't support source format.\n", __FUNCTION__);
@@ -410,15 +417,52 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw,
// return false;
// }
-// GLenum baseCachedFormat = _mesa_get_format_base_format(cacheTexFormat);
-// GLenum baseTargetFormat = _mesa_get_format_base_format(dst_image->TexFormat);
-// if (!(GL_RGBA == baseCachedFormat && GL_RGB == baseTargetFormat) &&
-// !(GL_LUMINANCE_ALPHA == baseCachedFormat && GL_LUMINANCE == baseTargetFormat) &&
-// baseTargetFormat != baseCachedFormat) {
-// _mesa_debug(&brw->ctx, "%s: Target base format %s doesn't match cached base: %s\n",
-// __FUNCTION__, _mesa_lookup_enum_by_nr(baseTargetFormat), _mesa_lookup_enum_by_nr(baseCachedFormat));
-// return false;
-// }
+ GLenum baseCachedFormat = _mesa_get_format_base_format(cacheTexFormat);
+ GLenum baseTargetFormat = _mesa_get_format_base_format(dst_image->TexFormat);
+ switch (baseCachedFormat) {
+ case GL_RED:
+ case GL_RG:
+ case GL_RGB:
+ case GL_RGBA:
+ switch (baseTargetFormat) {
+ case GL_RED:
+ case GL_RG:
+ case GL_RGB:
+ case GL_RGBA:
+ case GL_ALPHA:
+ break;
+ default:
+ _mesa_debug(&brw->ctx, "%s: Target base format %s doesn't match cached base: %s\n",
+ __FUNCTION__, _mesa_lookup_enum_by_nr(baseTargetFormat), _mesa_lookup_enum_by_nr(baseCachedFormat));
+ return false;
+ }
+ break;
+ case GL_LUMINANCE:
+ case GL_LUMINANCE_ALPHA:
+ if (GL_LUMINANCE == baseTargetFormat || GL_LUMINANCE_ALPHA == baseTargetFormat ||
+ GL_ALPHA == baseTargetFormat) {
+ break;
+ }
+ _mesa_debug(&brw->ctx, "%s: Target base format %s doesn't match cached base: %s\n",
+ __FUNCTION__, _mesa_lookup_enum_by_nr(baseTargetFormat), _mesa_lookup_enum_by_nr(baseCachedFormat));
+ return false;
+ case GL_DEPTH_COMPONENT:
+ if (GL_DEPTH_COMPONENT == baseTargetFormat) {
+ break;
+ }
+ _mesa_debug(&brw->ctx, "%s: Target base format %s doesn't match cached base: %s\n",
+ __FUNCTION__, _mesa_lookup_enum_by_nr(baseTargetFormat), _mesa_lookup_enum_by_nr(baseCachedFormat));
+ return false;
+ case GL_STENCIL_INDEX:
+ case GL_DEPTH_STENCIL:
+ if (GL_DEPTH_STENCIL == baseTargetFormat || GL_STENCIL_INDEX == baseTargetFormat) {
+ break;
+ }
+ default:
+ _mesa_debug(&brw->ctx, "%s: Target base format %s doesn't match cached base: %s\n",
+ __FUNCTION__, _mesa_lookup_enum_by_nr(baseTargetFormat), _mesa_lookup_enum_by_nr(baseCachedFormat));
+ return false;
+ }
// if (_mesa_is_enum_format_unsigned_int(format) && GL_UNSIGNED_INT != _mesa_get_format_datatype(cacheTexFormat)) {
// _mesa_debug(&brw->ctx, "%s: Cache format is not unsigned int\n", __FUNCTION__);
@@ -566,11 +610,6 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw,
// return false;
// }
- if (!brw->ctx.Driver.AllocTextureImageBuffer(&brw->ctx, dst_image)) {
- DBG("%s: AllocTextureImageBuffer failed\n", __FUNCTION__);
- return false;
- }
-
GLuint numSlices = 1, sliceOffset = 0;
GLint srcImageStride = 0;
GLint depth = 1;
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index c5a5bec5d7..9668905c1c 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -1769,148 +1769,241 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
* textures. These formats are required only for caching of an unaltered copy of
* the application texture prior to passing them to the GPU for processing to the final
* internalFormat and miptree location. Because these apply to temporary surfaces,
- * non-normalized format requests are not relavent.
+ * non-normalized format requests are not relavent. Based on the order presented
+ * in the spec.
*/
+ /* Red Solo - !cup */
{
- MESA_FORMAT_BGRA_FLOAT32,
- "MESA_FORMAT_BGRA_FLOAT32",
- GL_BGRA,
- GL_FLOAT,
- 32, 32, 32, 32,
+ MESA_FORMAT_R32,
+ "MESA_FORMAT_R32",
+ GL_RED,
+ GL_UNSIGNED_NORMALIZED,
+ 16, 0, 0, 0,
0, 0, 0, 0, 0,
- 1, 1, 16
+ 1, 1, 2
},
{
- MESA_FORMAT_BGRA_FLOAT16,
- "MESA_FORMAT_BGRA_FLOAT16",
- GL_BGRA,
- GL_FLOAT,
- 16, 16, 16, 16,
+ MESA_FORMAT_SIGNED_R32,
+ "MESA_FORMAT_SIGNED_R32",
+ GL_RED,
+ GL_SIGNED_NORMALIZED,
+ 32, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+
+ /* Red Green - !show */
+ {
+ MESA_FORMAT_SIGNED_RG88,
+ "MESA_FORMAT_SIGNED_RG88",
+ GL_RG,
+ GL_SIGNED_NORMALIZED,
+ 8, 8, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_SIGNED_RG1616,
+ "MESA_FORMAT_SIGNED_RG1616",
+ GL_RG,
+ GL_SIGNED_NORMALIZED,
+ 16, 16, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_RG3232,
+ "MESA_FORMAT_RG3232",
+ GL_RG,
+ GL_UNSIGNED_NORMALIZED,
+ 32, 32, 0, 0,
0, 0, 0, 0, 0,
1, 1, 8
},
+
+ /* Red Green Blue */
{
- MESA_FORMAT_BGR_FLOAT32,
- "MESA_FORMAT_BGR_FLOAT32",
- GL_BGR,
- GL_FLOAT,
- 32, 32, 32, 0,
+ MESA_FORMAT_SIGNED_RG3232,
+ "MESA_FORMAT_SIGNED_RG3232",
+ GL_RG,
+ GL_SIGNED_NORMALIZED,
+ 32, 32, 0, 0,
0, 0, 0, 0, 0,
- 1, 1, 12
+ 1, 1, 8
},
+
+ /* Red Green Blue */
{
- MESA_FORMAT_BGR_FLOAT16,
- "MESA_FORMAT_BGR_FLOAT16",
- GL_BGR,
- GL_FLOAT,
- 16, 16, 16, 0,
+ MESA_FORMAT_SIGNED_RGB888,
+ "MESA_FORMAT_SIGNED_RGB888",
+ GL_RGB,
+ GL_SIGNED_NORMALIZED,
+ 8, 8, 8, 0,
0, 0, 0, 0, 0,
- 1, 1, 6
+ 1, 1, 3
},
{
- MESA_FORMAT_BGR_INT8,
- "MESA_FORMAT_BGR_INT8",
- GL_BGR,
- GL_INT,
- 8, 8, 8, 0,
- 0, 0, 0, 0, 0,
- 1, 1, 3
+ MESA_FORMAT_RGB161616,
+ "MESA_FORMAT_RG161616",
+ GL_RGB,
+ GL_UNSIGNED_NORMALIZED,
+ 16, 16, 16, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 6
},
{
- MESA_FORMAT_BGR_INT16,
- "MESA_FORMAT_BGR_INT16",
+ MESA_FORMAT_SIGNED_RGB161616,
+ "MESA_FORMAT_SIGNED_RGB161616",
GL_RGB,
- GL_INT,
+ GL_SIGNED_NORMALIZED,
16, 16, 16, 0,
0, 0, 0, 0, 0,
1, 1, 6
},
{
- MESA_FORMAT_BGR_INT32,
- "MESA_FORMAT_BGR_INT32",
- GL_BGR,
- GL_INT,
+ MESA_FORMAT_RGB323232,
+ "MESA_FORMAT_RGB323232",
+ GL_RGB,
+ GL_UNSIGNED_NORMALIZED,
32, 32, 32, 0,
0, 0, 0, 0, 0,
1, 1, 12
},
{
- MESA_FORMAT_BGRA_INT8,
- "MESA_FORMAT_BGRAA_INT8",
- GL_BGRA,
- GL_INT,
- 8, 8, 8, 8,
+ MESA_FORMAT_SIGNED_RGB323232,
+ "MESA_FORMAT_SIGNED_RGB323232",
+ GL_RGB,
+ GL_SIGNED_NORMALIZED,
+ 32, 32, 32, 0,
0, 0, 0, 0, 0,
- 1, 1, 4
+ 1, 1, 12
},
{
- MESA_FORMAT_BGRA_INT16,
- "MESA_FORMAT_BGRA_INT16",
- GL_BGRA,
- GL_INT,
- 16, 16, 16, 16,
+ MESA_FORMAT_RGB233_REV,
+ "MESA_FORMAT_RGB233_REV",
+ GL_RGB,
+ GL_UNSIGNED_NORMALIZED,
+ 3, 3, 2, 0,
0, 0, 0, 0, 0,
- 1, 1, 8
+ 1, 1, 1
},
{
- MESA_FORMAT_BGRA_INT32,
- "MESA_FORMAT_BGRA_INT32",
- GL_BGRA,
- GL_INT,
- 32, 32, 32, 32,
+ MESA_FORMAT_RGB101111_REV,
+ "MESA_FORMAT_RGB101111_REV",
+ GL_RGB,
+ GL_UNSIGNED_NORMALIZED,
+ 11, 11, 10, 0,
0, 0, 0, 0, 0,
- 1, 1, 16
+ 1, 1, 4
},
+
+ /* Blue Green Red */
{
- MESA_FORMAT_BGR_UINT8,
- "MESA_FORMAT_BGR_UINT8",
- GL_BGR,
- GL_UNSIGNED_INT,
+ MESA_FORMAT_BGR888,
+ "MESA_FORMAT_BGR888",
+ GL_RGB,
+ GL_UNSIGNED_NORMALIZED,
8, 8, 8, 0,
0, 0, 0, 0, 0,
1, 1, 3
},
{
- MESA_FORMAT_BGR_UINT16,
- "MESA_FORMAT_BGR_UINT16",
- GL_BGR,
- GL_UNSIGNED_INT,
+ MESA_FORMAT_SIGNED_BGR888,
+ "MESA_FORMAT_SIGNED_BGR888",
+ GL_RGB,
+ GL_SIGNED_NORMALIZED,
+ 8, 8, 8, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 3
+ },
+ {
+ MESA_FORMAT_BGR161616,
+ "MESA_FORMAT_BGR161616",
+ GL_RGB,
+ GL_UNSIGNED_NORMALIZED,
16, 16, 16, 0,
0, 0, 0, 0, 0,
1, 1, 6
},
{
- MESA_FORMAT_BGR_UINT32,
- "MESA_FORMAT_BGR_UINT32",
- GL_BGR,
- GL_UNSIGNED_INT,
+ MESA_FORMAT_SIGNED_BGR161616,
+ "MESA_FORMAT_SIGNED_BGR161616",
+ GL_RGB,
+ GL_SIGNED_NORMALIZED,
+ 16, 16, 16, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 6
+ },
+ {
+ MESA_FORMAT_BGR_FLOAT16,
+ "MESA_FORMAT_BGR_FLOAT16",
+ GL_RGB,
+ GL_FLOAT,
+ 16, 16, 16, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 6
+ },
+ {
+ MESA_FORMAT_BGR323232,
+ "MESA_FORMAT_BGR323232",
+ GL_RGB,
+ GL_UNSIGNED_NORMALIZED,
32, 32, 32, 0,
0, 0, 0, 0, 0,
1, 1, 12
},
{
- MESA_FORMAT_BGRA_UINT8,
- "MESA_FORMAT_BGRA_UINT8",
- GL_BGRA,
- GL_UNSIGNED_INT,
- 8, 8, 8, 8,
+ MESA_FORMAT_SIGNED_BGR323232,
+ "MESA_FORMAT_SIGNED_BGR323232",
+ GL_RGB,
+ GL_SIGNED_NORMALIZED,
+ 32, 32, 32, 0,
0, 0, 0, 0, 0,
- 1, 1, 4
+ 1, 1, 12
},
{
- MESA_FORMAT_BGRA_UINT16,
- "MESA_FORMAT_BGRA_UINT16",
- GL_BGRA,
- GL_UNSIGNED_INT,
+ MESA_FORMAT_BGR_FLOAT32,
+ "MESA_FORMAT_BGR_FLOAT32",
+ GL_RGB,
+ GL_FLOAT,
+ 32, 32, 32, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 12
+ },
+
+ /* Red Green Blue Alpha */
+ {
+ MESA_FORMAT_RGBA16161616,
+ "MESA_FORMAT_RGBA161616",
+ GL_RGBA,
+ GL_UNSIGNED_NORMALIZED,
16, 16, 16, 16,
0, 0, 0, 0, 0,
1, 1, 8
},
{
- MESA_FORMAT_BGRA_UINT32,
- "MESA_FORMAT_BGRA_UINT32",
- GL_BGRA,
- GL_UNSIGNED_INT,
+ MESA_FORMAT_SIGNED_RGBA16161616,
+ "MESA_FORMAT_SIGNED_RGBA161616",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 16, 16, 16, 16,
+ 0, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_RGBA32323232,
+ "MESA_FORMAT_RGBA323232",
+ GL_RGBA,
+ GL_UNSIGNED_NORMALIZED,
+ 32, 32, 32, 32,
+ 0, 0, 0, 0, 0,
+ 1, 1, 16
+ },
+ {
+ MESA_FORMAT_SIGNED_RGBA32323232,
+ "MESA_FORMAT_SIGNED_RGBA323232",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
32, 32, 32, 32,
0, 0, 0, 0, 0,
1, 1, 16
@@ -1943,24 +2036,6 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
1, 1, 4
},
{
- MESA_FORMAT_RGB233_REV,
- "MESA_FORMAT_RGB233_REV",
- GL_RGB,
- GL_UNSIGNED_NORMALIZED,
- 3, 3, 2, 0,
- 0, 0, 0, 0, 0,
- 1, 1, 1
- },
- {
- MESA_FORMAT_RGB101111_REV,
- "MESA_FORMAT_RGB101111_REV",
- GL_RGB,
- GL_UNSIGNED_NORMALIZED,
- 3, 3, 2, 0,
- 0, 0, 0, 0, 0,
- 1, 1, 1
- },
- {
MESA_FORMAT_RGBA4444, /* Name */
"MESA_FORMAT_RGBA4444", /* StrName */
GL_RGBA, /* BaseFormat */
@@ -1987,10 +2062,93 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
1, 1, 2 /* BlockWidth/Height,Bytes */
},
+
+ /* Blue Green Red Alpha */
+ {
+ MESA_FORMAT_BGRA8888, /* Name */
+ "MESA_FORMAT_BGRA8888", /* StrName */
+ GL_RGBA, /* BaseFormat */
+ GL_UNSIGNED_NORMALIZED, /* DataType */
+ 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */
+ 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
+ 1, 1, 4 /* BlockWidth/Height,Bytes */
+ },
+ {
+ MESA_FORMAT_BGRA8888_REV, /* Name */
+ "MESA_FORMAT_BGRA8888", /* StrName */
+ GL_RGBA, /* BaseFormat */
+ GL_UNSIGNED_NORMALIZED, /* DataType */
+ 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */
+ 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
+ 1, 1, 4 /* BlockWidth/Height,Bytes */
+ },
+ {
+ MESA_FORMAT_SIGNED_BGRA8888,
+ "MESA_FORMAT_SIGNED_BGRA8888",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 8, 8, 8, 8,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_BGRA16161616,
+ "MESA_FORMAT_BGRA16161616",
+ GL_RGBA,
+ GL_UNSIGNED_NORMALIZED,
+ 16, 16, 16, 16,
+ 0, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_SIGNED_BGRA16161616,
+ "MESA_FORMAT_SIGNED_BGRA16161616",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 16, 16, 16, 16,
+ 0, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_BGRA_FLOAT16,
+ "MESA_FORMAT_BGRA_FLOAT16",
+ GL_RGBA,
+ GL_FLOAT,
+ 16, 16, 16, 16,
+ 0, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_BGRA32323232,
+ "MESA_FORMAT_BGRA32323232",
+ GL_RGBA,
+ GL_UNSIGNED_NORMALIZED,
+ 32, 32, 32, 32,
+ 0, 0, 0, 0, 0,
+ 1, 1, 16
+ },
+ {
+ MESA_FORMAT_SIGNED_BGRA32323232,
+ "MESA_FORMAT_SIGNED_BGRA32323232",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 32, 32, 32, 32,
+ 0, 0, 0, 0, 0,
+ 1, 1, 16
+ },
+ {
+ MESA_FORMAT_BGRA_FLOAT32,
+ "MESA_FORMAT_BGRA_FLOAT32",
+ GL_RGBA,
+ GL_FLOAT,
+ 32, 32, 32, 32,
+ 0, 0, 0, 0, 0,
+ 1, 1, 16
+ },
{
MESA_FORMAT_BGRA4444, /* Name */
"MESA_FORMAT_BGRA4444", /* StrName */
- GL_BGRA, /* BaseFormat */
+ GL_RGBA, /* BaseFormat */
GL_UNSIGNED_NORMALIZED, /* DataType */
4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */
0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
@@ -1999,7 +2157,7 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
{
MESA_FORMAT_BGRA4444_REV, /* Name */
"MESA_FORMAT_BGRA4444_REV", /* StrName */
- GL_BGRA, /* BaseFormat */
+ GL_RGBA, /* BaseFormat */
GL_UNSIGNED_NORMALIZED, /* DataType */
4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */
0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
@@ -2008,7 +2166,7 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
{
MESA_FORMAT_BGRA5551, /* Name */
"MESA_FORMAT_BGRA5551", /* StrName */
- GL_BGRA, /* BaseFormat */
+ GL_RGBA, /* BaseFormat */
GL_UNSIGNED_NORMALIZED, /* DataType */
5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */
0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
@@ -2017,34 +2175,16 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
{
MESA_FORMAT_BGRA1555_REV, /* Name */
"MESA_FORMAT_BGRA1555_REV", /* StrName */
- GL_BGRA, /* BaseFormat */
+ GL_RGBA, /* BaseFormat */
GL_UNSIGNED_NORMALIZED, /* DataType */
5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */
0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
1, 1, 2 /* BlockWidth/Height,Bytes */
},
{
- MESA_FORMAT_BGRA8888, /* Name */
- "MESA_FORMAT_BGRA8888", /* StrName */
- GL_BGRA, /* BaseFormat */
- GL_UNSIGNED_NORMALIZED, /* DataType */
- 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */
- 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
- 1, 1, 4 /* BlockWidth/Height,Bytes */
- },
- {
- MESA_FORMAT_BGRA8888_REV, /* Name */
- "MESA_FORMAT_BGRA8888", /* StrName */
- GL_BGRA, /* BaseFormat */
- GL_UNSIGNED_NORMALIZED, /* DataType */
- 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */
- 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
- 1, 1, 4 /* BlockWidth/Height,Bytes */
- },
- {
MESA_FORMAT_BGRA1010102,
"MESA_FORMAT_BGRA1010102",
- GL_BGRA,
+ GL_RGBA,
GL_UNSIGNED_NORMALIZED,
10, 10, 10, 2,
0, 0, 0, 0, 0,
@@ -2053,7 +2193,7 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
{
MESA_FORMAT_BGRA2101010_REV,
"MESA_FORMAT_BGRA2101010_REV",
- GL_BGRA,
+ GL_RGBA,
GL_UNSIGNED_NORMALIZED,
10, 10, 10, 2,
0, 0, 0, 0, 0,
@@ -2062,7 +2202,7 @@ static struct gl_format_info format_info[MESA_PRIVATE_FORMAT_COUNT] =
{
MESA_FORMAT_BGRA5999_REV,
"MESA_FORMAT_BGRA5999_REV",
- GL_BGRA,
+ GL_RGBA,
GL_UNSIGNED_NORMALIZED,
9, 9, 9, 5,
0, 0, 0, 0, 0,
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 9f083b51dc..0cfdf4c5a3 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -308,38 +308,67 @@ typedef enum
/*
* Formats to exactly represent format/type combinations for application provided
- * textures.
+ * textures. These formats are required only for caching of an unaltered copy of
+ * the application texture prior to passing them to the GPU for processing to the final
+ * internalFormat and miptree location. Because these apply to temporary surfaces,
+ * non-normalized format requests are not relavent. Based on the order presented
+ * in the spec.
*/
- MESA_FORMAT_BGRA_FLOAT32 = MESA_FORMAT_COUNT,
- MESA_FORMAT_BGRA_FLOAT16,
- MESA_FORMAT_BGR_FLOAT32,
+ /* Red Solo - !cup */
+ MESA_FORMAT_R32 = MESA_FORMAT_COUNT,
+ MESA_FORMAT_SIGNED_R32,
+
+ /* Red Green - !show */
+ MESA_FORMAT_SIGNED_RG88,
+ MESA_FORMAT_SIGNED_RG1616,
+ MESA_FORMAT_RG3232,
+ MESA_FORMAT_SIGNED_RG3232,
+
+ /* Red Green Blue */
+ MESA_FORMAT_SIGNED_RGB888,
+ MESA_FORMAT_RGB161616,
+ MESA_FORMAT_SIGNED_RGB161616,
+ MESA_FORMAT_RGB323232,
+ MESA_FORMAT_SIGNED_RGB323232,
+ MESA_FORMAT_RGB233_REV,
+ MESA_FORMAT_RGB101111_REV,
+
+ /* Blue Green Red */
+ MESA_FORMAT_BGR88,
+ MESA_FORMAT_SIGNED_BGR888,
+ MESA_FORMAT_BGR161616,
+ MESA_FORMAT_SIGNED_BGR161616,
MESA_FORMAT_BGR_FLOAT16,
- MESA_FORMAT_BGR_INT8,
- MESA_FORMAT_BGR_INT16,
- MESA_FORMAT_BGR_INT32,
- MESA_FORMAT_BGRA_INT8,
- MESA_FORMAT_BGRA_INT16,
- MESA_FORMAT_BGRA_INT32,
- MESA_FORMAT_BGR_UINT8,
- MESA_FORMAT_BGR_UINT16,
- MESA_FORMAT_BGR_UINT32,
- MESA_FORMAT_BGRA_UINT8,
- MESA_FORMAT_BGRA_UINT16,
- MESA_FORMAT_BGRA_UINT32,
+ MESA_FORMAT_BGR323232,
+ MESA_FORMAT_SIGNED_BGR323232,
+ MESA_FORMAT_BGR_FLOAT32,
+
+ /* Red Green Blue Alpha */
+ MESA_FORMAT_RGBA16161616,
+ MESA_FORMAT_SIGNED_RGBA16161616,
+ MESA_FORMAT_RGBA32323232,
+ MESA_FORMAT_SIGNED_RGBA32323232,
MESA_FORMAT_RGBA1010102,
MESA_FORMAT_RGBA2101010_REV,
MESA_FORMAT_RGBA5999_REV,
- MESA_FORMAT_RGB233_REV,
- MESA_FORMAT_RGB101111_REV,
MESA_FORMAT_RGBA4444,
MESA_FORMAT_RGBA4444_REV,
MESA_FORMAT_RGBA1555_REV,
+
+ /* Blue Green Red Alpha */
+ MESA_FORMAT_BGRA8888,
+ MESA_FORMAT_BGRA8888_REV,
+ MESA_FORMAT_SIGNED_BGRA8888,
+ MESA_FORMAT_BGRA16161616,
+ MESA_FORMAT_SIGNED_BGRA16161616,
+ MESA_FORMAT_BGRA_FLOAT16,
+ MESA_FORMAT_BGRA32323232,
+ MESA_FORMAT_SIGNED_BGRA32323232,
+ MESA_FORMAT_BGRA_FLOAT32,
MESA_FORMAT_BGRA4444,
MESA_FORMAT_BGRA4444_REV,
MESA_FORMAT_BGRA5551,
MESA_FORMAT_BGRA1555_REV,
- MESA_FORMAT_BGRA8888,
- MESA_FORMAT_BGRA8888_REV,
MESA_FORMAT_BGRA1010102,
MESA_FORMAT_BGRA2101010_REV,
MESA_FORMAT_BGRA5999_REV,
diff --git a/src/mesa/main/texformat.h b/src/mesa/main/texformat.h
index b94ecb131f..66d50b381c 100644
--- a/src/mesa/main/texformat.h
+++ b/src/mesa/main/texformat.h
@@ -37,7 +37,7 @@ extern "C" {
struct gl_context;
extern gl_format
-_mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum target, GLenum format, GLenum type);
+_mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum type);
extern gl_format
_mesa_choose_tex_format(struct gl_context *ctx, GLenum target,
GLint internalFormat, GLenum format, GLenum type);