summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mueller <MarkKMueller@gmail.com>2013-11-27 14:47:10 -0800
committerMark Mueller <MarkKMueller@gmail.com>2014-01-13 09:44:30 -0800
commitc408e9e5b491b27e6a6f927ee931f1d4932b75d8 (patch)
tree2a45f18678a8fe6b9df12982c115b9e8237a7217
parentd5b25b9992992773acaabc9d8c90183f922347e9 (diff)
Resolve issues with internal formats that force extra processing.
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp.h15
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp_blit.cpp475
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h4
-rw-r--r--src/mesa/drivers/dri/i965/brw_surface_formats.c116
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c20
-rw-r--r--src/mesa/main/texformat.c9
6 files changed, 553 insertions, 86 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
index 2be91fefe5..593cab079e 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -370,9 +370,22 @@ public:
static bool test_formats(struct brw_context *brw,
gl_format src_format,
gl_format dst_format,
- GLint internal_format = 0);
+ GLint base_internal_format = 0);
private:
+ class color_state {
+ u_int8_t red;
+ u_int8_t green;
+ u_int8_t blue;
+ u_int8_t alpha;
+ u_int8_t luminance;
+ u_int8_t intensity;
+ u_int8_t depth;
+ u_int8_t stencil;
+ };
+
+ static bool evaluate_internal_format(GLenum internal_format,
+ color_state *color_bit_sel);
brw_blorp_blit_prog_key wm_prog_key;
};
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index 0950473a43..bc5c0349bb 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -157,10 +157,6 @@ brw_blorp_blit_miptrees(struct brw_context *brw,
dst_level, dst_layer, dst_x0, dst_y0, dst_x1, dst_y1,
mirror_x, mirror_y);
- if (!brw_blorp_blit_params::test_formats(brw, src_mt->format, dst_mt->format)) {
- return false;
- }
-
brw_blorp_blit_params params(brw,
src_mt, src_level, src_layer,
dst_mt, dst_level, dst_layer,
@@ -198,11 +194,6 @@ do_blorp_blit(struct brw_context *brw, GLbitfield buffer_bit,
struct intel_mipmap_tree *src_mt = find_miptree(buffer_bit, src_irb);
struct intel_mipmap_tree *dst_mt = find_miptree(buffer_bit, dst_irb);
- if (!brw_blorp_blit_params::test_formats(brw, src_mt->format, dst_mt->format)) {
- _mesa_debug(&brw->ctx, "%s: Failed format test src texture format: %s, dst format: %s\n",
- __FUNCTION__, _mesa_get_format_name(src_mt->format), _mesa_get_format_name(dst_mt->format));
- }
-
/* Do the blit */
brw_blorp_blit_miptrees(brw,
src_mt, src_irb->mt_level, src_irb->mt_layer,
@@ -406,11 +397,12 @@ brw_blorp_GPUcopytexsubimage(struct brw_context *brw,
/* Come up with a match to the source format for the texture cache */
gl_format cacheTexFormat = _mesa_choose_cached_tex_format(&brw->ctx, format, type);
- _mesa_debug(&brw->ctx, "%s: Cache Texture Format: %s, Target Format: %s, Internal Format: %s\n",
+ _mesa_debug(&brw->ctx, "%s: Cache Texture Format: %s, Target Format: %s, Internal Format: %s"
+ "Base Internal Format: %s\n",
__FUNCTION__, _mesa_get_format_name(cacheTexFormat), _mesa_get_format_name(dst_image->TexFormat),
- _mesa_lookup_enum_by_nr(dst_image->InternalFormat));
+ _mesa_lookup_enum_by_nr(dst_image->InternalFormat), _mesa_lookup_enum_by_nr(dst_image->_BaseFormat));
- if (!brw_blorp_blit_params::test_formats(brw, cacheTexFormat, dst_image->TexFormat, dst_image->InternalFormat)) {
+ if (!brw_blorp_blit_params::test_formats(brw, cacheTexFormat, dst_image->TexFormat, dst_image->_BaseFormat)) {
return false;
}
@@ -2249,6 +2241,461 @@ brw_blorp_blit_params::find_brw_format(struct brw_context *brw, gl_format src_fo
unsigned componentCount = _mesa_base_format_component_count(src_format);
}
+/* If the application requests an internal format that i965 can't match, the texture still
+ * must look like it is that format. Evaluate internal format will decide what is required
+ * to make the texture look like it is supposed to.
+ */
+#if 0
+bool
+brw_blorp_blit_params::evaluate_internal_format(GLenum base_internal_format, color_state *color_bit_sel) {
+ memset(color_bit_sel, 0 ,sizeof(color_state));
+ switch (base_internal_format) {
+ case GL_RGBA:
+ case GL_RGBA8:
+ color_bit_sel->alpha = 8;
+ case 3:
+ case GL_RGB:
+ case GL_RGB8:
+ color_bit_sel->blue = 8;
+ case GL_RG:
+ color_bit_sel->green = 8;
+ case GL_R:
+ color_bit_sel->red = 8;
+ break;
+ case GL_DEPTH_COMPONENT:
+ color_bit_sel->depth = 32;
+ break;
+ case GL_DEPTH_STENCIL:
+ color_bit_sel->stencil = 8;
+
+ case GL_RGBA4:
+ color_bit_sel->alpha = 4;
+ case GL_RGB4:
+ color_bit_sel->red = 4;
+ color_bit_sel->green = 4;
+ color_bit_sel->blue = 4;
+ break;
+
+ case GL_RGB5_A1:
+ color_bit_sel->alpha = 1;
+ case GL_RGB5:
+ color_bit_sel->red = 5;
+ color_bit_sel->green = 5;
+ color_bit_sel->blue = 5;
+ break;
+ case GL_RGBA2:
+ color_bit_sel->red = 4;
+ color_bit_sel->green = 4;
+ color_bit_sel->blue = 4;
+ color_bit_sel->alpha = 2;
+ break;
+
+ case GL_RGB565:
+ color_bit_sel->red = 5;
+ color_bit_sel->green = 6;
+ color_bit_sel->blue = 5;
+ break;
+ break;
+
+ /* deep RGBA formats */
+ case GL_RGB10_A2:
+ color_bit_sel->alpha = 2;
+ case GL_RGB10:
+ color_bit_sel->red = 10;
+ color_bit_sel->green = 10;
+ color_bit_sel->blue = 10;
+ break;
+ case GL_RGBA12:
+ color_bit_sel->alpha = 12;
+ case GL_RGB12:
+ color_bit_sel->red = 12;
+ color_bit_sel->green = 12;
+ color_bit_sel->blue = 12;
+ break;
+ case GL_RGBA16:
+ color_bit_sel->alpha = 16;
+ case GL_RGB16:
+ color_bit_sel->red = 16;
+ color_bit_sel->green = 16;
+ color_bit_sel->blue = 16;
+ break;
+
+ /* shallow RGB formats */
+ case GL_R3_G3_B2:
+ color_bit_sel->red = 3;
+ color_bit_sel->green = 3;
+ color_bit_sel->blue = 2;
+ break;
+
+ /* Alpha formats */
+ case GL_ALPHA4:
+ color_bit_sel->alpha = 4;
+ break;
+ case GL_ALPHA:
+ case GL_ALPHA8:
+ color_bit_sel->alpha = 8;
+ break;
+
+ case GL_ALPHA12:
+ color_bit_sel->alpha = 12;
+ break;
+ case GL_ALPHA16:
+ color_bit_sel->alpha = 16;
+ break;
+
+ /* Luminance formats */
+ case 2:
+ case GL_LUMINANCE_ALPHA:
+ case GL_LUMINANCE8_ALPHA8:
+ color_bit_sel->alpha = 8;
+ case 1:
+ case GL_LUMINANCE8:
+ case GL_LUMINANCE:
+ color_bit_sel->luminance = 8;
+ break;
+ case GL_LUMINANCE4_ALPHA4:
+ color_bit_sel->alpha = 4;
+ case GL_LUMINANCE4:
+ color_bit_sel->luminance = 4;
+ break;
+ case GL_LUMINANCE6_ALPHA2:
+ color_bit_sel->alpha = 2;
+ color_bit_sel->luminance = 6;
+ break;
+
+ case GL_LUMINANCE12_ALPHA4:
+ color_bit_sel->alpha = 4;
+ color_bit_sel->luminance = 12;
+ break;
+ case GL_LUMINANCE12_ALPHA12:
+ color_bit_sel->alpha = 12;
+ case GL_LUMINANCE12:
+ color_bit_sel->luminance = 12;
+ break;
+ case GL_LUMINANCE16_ALPHA16:
+ color_bit_sel->alpha = 16;
+ case GL_LUMINANCE16:
+ color_bit_sel->luminance = 16;
+ break;
+
+ break;
+
+ case GL_INTENSITY4:
+ color_bit_sel->intensity = 4;
+ break;
+ case GL_INTENSITY:
+ case GL_INTENSITY8:
+ color_bit_sel->intensity = 8;
+ break;
+
+ case GL_INTENSITY12:
+ color_bit_sel->intensity = 12;
+ break;
+ case GL_INTENSITY16:
+ color_bit_sel->intensity = 16;
+ break;
+
+ case GL_DEPTH_COMPONENT24:
+ color_bit_sel->depth = 24;
+ break;
+ case GL_DEPTH_COMPONENT32:
+ color_bit_sel->depth = 32;
+ break;
+ case GL_DEPTH_COMPONENT16:
+ color_bit_sel->depth = 16;
+ break;
+
+ case GL_COMPRESSED_ALPHA_ARB:
+ case GL_COMPRESSED_LUMINANCE_ARB:
+ case GL_COMPRESSED_LUMINANCE_ALPHA_ARB:
+ case GL_COMPRESSED_INTENSITY_ARB:
+ case GL_COMPRESSED_RGB_ARB:
+ case GL_COMPRESSED_RGBA_ARB:
+ case GL_YCBCR_MESA:
+ case GL_COMPRESSED_RGB_FXT1_3DFX:
+ case GL_COMPRESSED_RGBA_FXT1_3DFX:
+ case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+ case GL_RGB_S3TC:
+ case GL_RGB4_S3TC:
+ case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+ case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
+ case GL_RGBA_S3TC:
+ case GL_RGBA4_S3TC:
+ case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
+ case GL_COMPRESSED_RED_RGTC1:
+ case GL_COMPRESSED_SIGNED_RED_RGTC1:
+ case GL_COMPRESSED_RG_RGTC2:
+ case GL_COMPRESSED_SIGNED_RG_RGTC2:
+ case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
+ case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
+ case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
+ case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
+ case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
+ case GL_ETC1_RGB8_OES:
+ case GL_COMPRESSED_RGB8_ETC2:
+ case GL_COMPRESSED_SRGB8_ETC2:
+ case GL_COMPRESSED_RGBA8_ETC2_EAC:
+ case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
+ case GL_COMPRESSED_R11_EAC:
+ case GL_COMPRESSED_RG11_EAC:
+ case GL_COMPRESSED_SIGNED_R11_EAC:
+ case GL_COMPRESSED_SIGNED_RG11_EAC:
+ case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
+ case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
+ case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
+ return false;
+
+ case GL_ALPHA16F_ARB:
+ break;
+ case GL_ALPHA32F_ARB:
+ break;
+ case GL_LUMINANCE16F_ARB:
+ break;
+ case GL_LUMINANCE32F_ARB:
+ break;
+ case GL_LUMINANCE_ALPHA16F_ARB:
+ break;
+ case GL_LUMINANCE_ALPHA32F_ARB:
+ break;
+ case GL_INTENSITY16F_ARB:
+ break;
+ case GL_INTENSITY32F_ARB:
+ break;
+ case GL_RGB16F_ARB:
+ break;
+ case GL_RGB32F_ARB:
+ break;
+ case GL_RGBA16F_ARB:
+ break;
+ case GL_RGBA32F_ARB:
+ break;
+
+ case GL_RGB9_E5:
+// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_RGB9_E5_FLOAT]);
+// return MESA_FORMAT_RGB9_E5_FLOAT;
+
+ case GL_R11F_G11F_B10F:
+ /* GL_EXT_texture_packed_float -- just one format to support */
+// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_R11_G11_B10_FLOAT]);
+// return MESA_FORMAT_R11_G11_B10_FLOAT;
+
+ case GL_DEPTH24_STENCIL8_EXT:
+ break;
+
+ case GL_DEPTH_COMPONENT32F:
+// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT]);
+// return MESA_FORMAT_Z32_FLOAT;
+ case GL_DEPTH32F_STENCIL8:
+// ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT_X24S8]);
+// return MESA_FORMAT_Z32_FLOAT_X24S8;
+
+ case GL_DUDV_ATI:
+ case GL_DU8DV8_ATI:
+ break;
+
+ case GL_RED_SNORM:
+ case GL_R8_SNORM:
+ break;
+ case GL_RG_SNORM:
+ case GL_RG8_SNORM:
+ break;
+ case GL_RGB_SNORM:
+ case GL_RGB8_SNORM:
+ /* FALLTHROUGH */
+ case GL_RGBA_SNORM:
+ case GL_RGBA8_SNORM:
+ break;
+ case GL_ALPHA_SNORM:
+ case GL_ALPHA8_SNORM:
+ break;
+ case GL_LUMINANCE_SNORM:
+ case GL_LUMINANCE8_SNORM:
+ break;
+ case GL_LUMINANCE_ALPHA_SNORM:
+ case GL_LUMINANCE8_ALPHA8_SNORM:
+ break;
+ case GL_INTENSITY_SNORM:
+ case GL_INTENSITY8_SNORM:
+ break;
+ case GL_R16_SNORM:
+ break;
+ case GL_RG16_SNORM:
+ break;
+ case GL_RGB16_SNORM:
+ case GL_RGBA16_SNORM:
+ break;
+ case GL_ALPHA16_SNORM:
+ break;
+ case GL_LUMINANCE16_SNORM:
+ /* FALLTHROUGH */
+ case GL_LUMINANCE16_ALPHA16_SNORM:
+ break;
+ case GL_INTENSITY16_SNORM:
+ break;
+
+ case GL_SRGB_EXT:
+ case GL_SRGB8_EXT:
+ break;
+ case GL_SRGB_ALPHA_EXT:
+ case GL_SRGB8_ALPHA8_EXT:
+ break;
+ case GL_SLUMINANCE_EXT:
+ case GL_SLUMINANCE8_EXT:
+ break;
+ case GL_SLUMINANCE_ALPHA_EXT:
+ case GL_SLUMINANCE8_ALPHA8_EXT:
+ break;
+ case GL_COMPRESSED_SLUMINANCE_EXT:
+ break;
+ case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
+ break;
+ case GL_COMPRESSED_SRGB_EXT:
+ break;
+ case GL_COMPRESSED_SRGB_ALPHA_EXT:
+ break;
+
+ case GL_ALPHA8UI_EXT:
+ break;
+ case GL_ALPHA16UI_EXT:
+ break;
+ case GL_ALPHA32UI_EXT:
+ break;
+ case GL_ALPHA8I_EXT:
+ break;
+ case GL_ALPHA16I_EXT:
+ break;
+ case GL_ALPHA32I_EXT:
+ break;
+ case GL_LUMINANCE8UI_EXT:
+ break;
+ case GL_LUMINANCE16UI_EXT:
+ break;
+ case GL_LUMINANCE32UI_EXT:
+ break;
+ case GL_LUMINANCE8I_EXT:
+ break;
+ case GL_LUMINANCE16I_EXT:
+ break;
+ case GL_LUMINANCE32I_EXT:
+ break;
+ case GL_LUMINANCE_ALPHA8UI_EXT:
+ break;
+ case GL_LUMINANCE_ALPHA16UI_EXT:
+ break;
+ case GL_LUMINANCE_ALPHA32UI_EXT:
+ break;
+ case GL_LUMINANCE_ALPHA8I_EXT:
+ break;
+ case GL_LUMINANCE_ALPHA16I_EXT:
+ break;
+ case GL_LUMINANCE_ALPHA32I_EXT:
+ break;
+ case GL_INTENSITY8UI_EXT:
+ break;
+ case GL_INTENSITY16UI_EXT:
+ break;
+ case GL_INTENSITY32UI_EXT:
+ break;
+ case GL_INTENSITY8I_EXT:
+ break;
+ case GL_INTENSITY16I_EXT:
+ break;
+ case GL_INTENSITY32I_EXT:
+ break;
+
+ case GL_RGB8UI_EXT:
+ break;
+ case GL_RGB16UI_EXT:
+ break;
+ case GL_RGB32UI_EXT:
+ break;
+ case GL_RGB8I_EXT:
+ break;
+ case GL_RGB16I_EXT:
+ break;
+ case GL_RGB32I_EXT:
+ break;
+ case GL_RGBA8UI_EXT:
+ break;
+ case GL_RGBA16UI_EXT:
+ break;
+ case GL_RGBA32UI_EXT:
+ break;
+ case GL_RGBA8I_EXT:
+ break;
+ case GL_RGBA16I_EXT:
+ break;
+ case GL_RGBA32I_EXT:
+ break;
+
+ case GL_R8:
+ case GL_RED:
+ break;
+
+ case GL_COMPRESSED_RED:
+// if (target != GL_TEXTURE_1D && target != GL_TEXTURE_1D_ARRAY)
+// RETURN_IF_SUPPORTED(MESA_FORMAT_RED_RGTC1);
+// RETURN_IF_SUPPORTED(MESA_FORMAT_R8);
+ break;
+
+ case GL_R16:
+ break;
+
+ case GL_COMPRESSED_RG:
+// if (target != GL_TEXTURE_1D && target != GL_TEXTURE_1D_ARRAY)
+// RETURN_IF_SUPPORTED(MESA_FORMAT_RG_RGTC2);
+// RETURN_IF_SUPPORTED(MESA_FORMAT_GR88);
+ break;
+
+ case GL_RG16:
+ break;
+
+ case GL_R16F:
+ break;
+ case GL_R32F:
+ break;
+ case GL_RG16F:
+ break;
+ case GL_RG32F:
+ break;
+
+ case GL_R8UI:
+ break;
+ case GL_RG8UI:
+ break;
+ case GL_R16UI:
+ break;
+ case GL_RG16UI:
+ break;
+ case GL_R32UI:
+ break;
+ case GL_RG32UI:
+ break;
+ case GL_R8I:
+ break;
+ case GL_RG8I:
+ break;
+ case GL_R16I:
+ break;
+ case GL_RG16I:
+ break;
+ case GL_R32I:
+ break;
+ case GL_RG32I:
+ break;
+
+ case GL_RGB10_A2UI:
+ break;
+
+ case GL_BGRA:
+ break;
+ }
+
+}
+#endif
bool
brw_blorp_blit_params::compare_source_to_target(struct brw_context *brw,
GLenum baseSourceFormat,
@@ -2314,7 +2761,7 @@ bool
brw_blorp_blit_params::test_formats(struct brw_context *brw,
gl_format src_format,
gl_format dst_format,
- GLint internal_format)
+ GLint base_internal_format)
{
struct gl_context *ctx = &brw->ctx;
@@ -2371,7 +2818,7 @@ brw_blorp_blit_params::test_formats(struct brw_context *brw,
GLenum baseDestinationFormat = _mesa_get_format_base_format(dst_format);
return compare_source_to_target(brw, baseSourceFormat, baseDestinationFormat) &&
- compare_source_to_target(brw, baseSourceFormat, internal_format);
+ (0 == base_internal_format || compare_source_to_target(brw, baseSourceFormat, base_internal_format));
}
brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw,
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index d75bd307d1..8b9bf5863d 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -197,7 +197,7 @@ typedef enum {
sample_scale = 1 << 8,
alpha_blend_render = 1 << 9,
- x_shadow = 1 << 10,
+ blorp_shadow_sampler = 1 << 10,
scale_mask = scale_x | scale_y | scale_z | scale_w,
scale_xy = scale_x | scale_y,
@@ -206,7 +206,7 @@ typedef enum {
swizzle_xy = swizzle_x | swizzle_y,
swizzle_xyz = swizzle_x | swizzle_y | swizzle_z,
swizzle_yzw = swizzle_y | swizzle_z | swizzle_w,
- not_supported_mask = scale_mask | swizzle_mask | sample_scale
+ not_supported_mask = scale_mask | swizzle_mask | sample_scale | blorp_shadow_sampler
} blorp_process_format;
#define BRW_NEW_URB_FENCE (1 << BRW_STATE_URB_FENCE)
diff --git a/src/mesa/drivers/dri/i965/brw_surface_formats.c b/src/mesa/drivers/dri/i965/brw_surface_formats.c
index 65e70c7fc0..16d0dd6f2c 100644
--- a/src/mesa/drivers/dri/i965/brw_surface_formats.c
+++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c
@@ -464,13 +464,13 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
swizzle_all},
[MESA_FORMAT_S8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- BRW_SURFACEFORMAT_I24X8_UNORM,
+ BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
0},
[MESA_FORMAT_Z16] = {BRW_SURFACEFORMAT_R16_UNORM,
- BRW_SURFACEFORMAT_I16_UNORM,
- 0},
+ BRW_SURFACEFORMAT_R16_UNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_X8_Z24] = {BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
- BRW_SURFACEFORMAT_I24X8_UNORM,
+ BRW_SURFACEFORMAT_B8G8R8A8_UNORM,
0},
[MESA_FORMAT_Z24_X8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACE_FORMAT_NONE,
@@ -480,7 +480,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
swizzle_all},
[MESA_FORMAT_S8] = {BRW_SURFACEFORMAT_R8_UNORM,
BRW_SURFACEFORMAT_R8_UNORM,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_SRGB8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB,
@@ -576,83 +576,83 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_RG_FLOAT16] = {BRW_SURFACEFORMAT_R16G16_FLOAT,
BRW_SURFACEFORMAT_R16G16_FLOAT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_INTENSITY_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_INTENSITY_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_INTENSITY_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_INTENSITY_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_INTENSITY_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_INTENSITY_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_ALPHA_INT8] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_ALPHA_INT16] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_LUMINANCE_ALPHA_INT32] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- 0},
+ blorp_shadow_sampler},
[MESA_FORMAT_R_INT8] = {BRW_SURFACEFORMAT_R8_SINT,
BRW_SURFACEFORMAT_R8_SINT,
@@ -673,7 +673,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
BRW_SURFACEFORMAT_R16G16_SINT,
0},
[MESA_FORMAT_RGB_INT16] = {BRW_SURFACE_FORMAT_NONE, /* This format requires converting SINT to another format in blorp. */
- BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16_SINT,
0},
[MESA_FORMAT_RGBA_INT16] = {BRW_SURFACEFORMAT_R16G16B16A16_SINT,
BRW_SURFACEFORMAT_R16G16B16A16_SINT,
@@ -710,7 +710,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
BRW_SURFACEFORMAT_R16G16_UINT,
0},
[MESA_FORMAT_RGB_UINT16] = {BRW_SURFACE_FORMAT_NONE, /* This format requires converting UINT to another format in blorp. */
- BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16_UINT,
0},
[MESA_FORMAT_RGBA_UINT16] = {BRW_SURFACEFORMAT_R16G16B16A16_UINT,
BRW_SURFACEFORMAT_R16G16B16A16_UINT,
@@ -753,7 +753,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
BRW_SURFACEFORMAT_R16G16_SNORM,
0},
[MESA_FORMAT_SIGNED_RGB_16] = {BRW_SURFACE_FORMAT_NONE, /* This format requires converting SNORM to another format in blorp. */
- BRW_SURFACE_FORMAT_NONE,
+ BRW_SURFACEFORMAT_R16G16B16_SNORM,
0},
[MESA_FORMAT_SIGNED_RGBA_16] = {BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
@@ -823,29 +823,29 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_SIGNED_A8] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R8_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_SIGNED_L8] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R8_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_SIGNED_AL88] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R8G8_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_SIGNED_I8] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R8_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_SIGNED_A16] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R16_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_SIGNED_L16] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R16_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_SIGNED_AL1616] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R16G16_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_SIGNED_I16] = {BRW_SURFACE_FORMAT_NONE,
- BRW_SURFACE_FORMAT_NONE,
- swizzle_all},
+ BRW_SURFACEFORMAT_R16_SNORM,
+ blorp_shadow_sampler},
[MESA_FORMAT_RGB9_E5_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP,
@@ -854,7 +854,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
BRW_SURFACEFORMAT_R11G11B10_FLOAT,
0},
- [MESA_FORMAT_Z32_FLOAT] = {BRW_SURFACEFORMAT_I32_FLOAT,
+ [MESA_FORMAT_Z32_FLOAT] = {BRW_SURFACEFORMAT_R32_FLOAT,
BRW_SURFACEFORMAT_R32_FLOAT,
0},
[MESA_FORMAT_Z32_FLOAT_X24S8] = {BRW_SURFACEFORMAT_R32G32_FLOAT_LD,
@@ -876,16 +876,16 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
alpha_blend_render},
[MESA_FORMAT_XBGR8888_SNORM] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
- alpha_blend_render | swizzle_all | x_shadow},
+ alpha_blend_render | swizzle_all},
[MESA_FORMAT_XBGR8888_SRGB] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB,
alpha_blend_render | swizzle_all},
[MESA_FORMAT_XBGR8888_UINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8B8A8_UINT,
- alpha_blend_render | swizzle_all | x_shadow},
+ alpha_blend_render | swizzle_all},
[MESA_FORMAT_XBGR8888_SINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R8G8B8A8_SINT,
- alpha_blend_render | swizzle_all | x_shadow},
+ alpha_blend_render | swizzle_all},
[MESA_FORMAT_XRGB2101010_UNORM] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_B10G10R10X2_UNORM,
alpha_blend_render},
@@ -894,25 +894,25 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
0},
[MESA_FORMAT_XBGR16161616_SNORM] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16B16A16_SNORM,
- alpha_blend_render | swizzle_all | x_shadow},
+ alpha_blend_render | swizzle_all},
[MESA_FORMAT_XBGR16161616_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16B16X16_FLOAT,
alpha_blend_render},
[MESA_FORMAT_XBGR16161616_UINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16B16A16_UINT,
- alpha_blend_render | swizzle_all | x_shadow},
+ alpha_blend_render | swizzle_all},
[MESA_FORMAT_XBGR16161616_SINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R16G16B16A16_SINT,
- alpha_blend_render | swizzle_all | x_shadow},
+ alpha_blend_render | swizzle_all},
[MESA_FORMAT_XBGR32323232_FLOAT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32G32B32X32_FLOAT,
alpha_blend_render},
[MESA_FORMAT_XBGR32323232_UINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32G32B32A32_UINT,
- alpha_blend_render | swizzle_all | x_shadow},
+ alpha_blend_render | swizzle_all},
[MESA_FORMAT_XBGR32323232_SINT] = {BRW_SURFACE_FORMAT_NONE,
BRW_SURFACEFORMAT_R32G32B32A32_SINT,
- alpha_blend_render | swizzle_all | x_shadow}
+ alpha_blend_render | swizzle_all}
};
assert(mesa_format < MESA_PRIVATE_FORMAT_COUNT);
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 798b566a85..dd89da85e7 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -288,16 +288,16 @@ brw_update_texture_surface(struct gl_context *ctx,
blorp_process_format process_flags;
BRW_SURFACE brw_surface;
- BRW_SURFACE *dst_format;
- BRW_SURFACE *src_format;
-
- if (!for_gather) {
- dst_format = 0;
- src_format = &brw_surface;
- } else {
- dst_format = &brw_surface;
- src_format = 0;
- }
+// BRW_SURFACE *dst_format;
+// BRW_SURFACE *src_format;
+
+// if (!for_gather) {
+// dst_format = 0;
+// src_format = &brw_surface;
+// } else {
+// dst_format = &brw_surface;
+// src_format = 0;
+// }
translate_tex_format(brw,
mt->format,
sampler->sRGBDecode,
diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index 474a310d61..e4fd99095f 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -848,6 +848,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
{
switch (format) {
case GL_RED:
+ case GL_RED_INTEGER:
switch (type) {
case GL_BYTE:
return MESA_FORMAT_R_INT8;
@@ -869,6 +870,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
break;
case GL_RG:
+ case GL_RG_INTEGER:
switch (type) {
case GL_BYTE:
return MESA_FORMAT_RG_INT8;
@@ -890,6 +892,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
break;
case GL_RGB:
+ case GL_RGB_INTEGER:
switch (type) {
case GL_BYTE:
return MESA_FORMAT_RGB_INT8;
@@ -921,6 +924,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
break;
case GL_BGR:
+ case GL_BGR_INTEGER:
switch (type) {
case GL_BYTE:
return MESA_FORMAT_BGR_INT8;
@@ -942,6 +946,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
break;
case GL_RGBA:
+ case GL_RGBA_INTEGER:
switch (type) {
case GL_BYTE:
return MESA_FORMAT_RGBA_INT8;
@@ -981,6 +986,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
break;
case GL_BGRA:
+ case GL_BGRA_INTEGER:
switch (type) {
case GL_BYTE:
return MESA_FORMAT_BGRA_INT8;
@@ -1019,6 +1025,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
}
break;
+// case GL_ALPHA8I_EXT:
case GL_LUMINANCE:
switch (type) {
case GL_BYTE:
@@ -1098,7 +1105,7 @@ _mesa_choose_cached_tex_format(struct gl_context *ctx, GLenum format, GLenum typ
break;
}
- _mesa_problem(ctx, "%s(): unexpected format %s and type %s\n",
+ _mesa_debug(ctx, "%s(): unexpected format %s and type %s\n",
__FUNCTION__, _mesa_lookup_enum_by_nr(format), _mesa_lookup_enum_by_nr(type));
return MESA_FORMAT_NONE;
}