summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mueller <MarkKMueller@gmail.com>2013-12-05 12:42:50 -0800
committerMark Mueller <MarkKMueller@gmail.com>2014-01-13 09:44:31 -0800
commitd0e71bb0a12c54bd266bc942a836a55c8a6d8738 (patch)
treeeee2f57b61623d9ab23d1c4dbcf2763a19f65b05
parentd85697f3f129f26784c83c1f0e3b4c83b2d3c6f4 (diff)
Reverted to previous usage of BRW_SURFACEFORMAT_R32G32_FLOAT_LD.
Resolved issue where R format is used as a sampler for Alpha, Intensity, and Luminance user textures. Down to 17 failed regressions and 27 skipped regressions
-rw-r--r--src/mesa/drivers/dri/i965/brw_surface_formats.c60
-rw-r--r--src/mesa/drivers/dri/i965/gen7_wm_surface_state.c3
2 files changed, 35 insertions, 28 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_surface_formats.c b/src/mesa/drivers/dri/i965/brw_surface_formats.c
index 5576148391..05f3040559 100644
--- a/src/mesa/drivers/dri/i965/brw_surface_formats.c
+++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c
@@ -590,7 +590,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
BRW_SURFACEFORMAT_R16_FLOAT,
0},
[MESA_FORMAT_RG_FLOAT32] = {BRW_SURFACEFORMAT_R32G32_FLOAT,
- BRW_SURFACEFORMAT_R32G32_FLOAT_LD,
+ BRW_SURFACEFORMAT_R32G32_FLOAT,
0},
[MESA_FORMAT_RG_FLOAT16] = {BRW_SURFACEFORMAT_R16G16_FLOAT,
BRW_SURFACEFORMAT_R16G16_FLOAT,
@@ -598,60 +598,60 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
[MESA_FORMAT_ALPHA_UINT8] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_ALPHA_UINT16] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_ALPHA_UINT32] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_ALPHA_INT8] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_ALPHA_INT16] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_ALPHA_INT32] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_INTENSITY_UINT8] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_INTENSITY_UINT16] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_INTENSITY_UINT32] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_INTENSITY_INT8] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_INTENSITY_INT16] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_INTENSITY_INT32] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_UINT8] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R8_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_UINT16] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R16_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_UINT32] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R32_UINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_INT8] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R8_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_INT16] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R16_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_INT32] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R32_SINT,
- 0},
+ sample_swizzle_x},
[MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R8G8_UINT,
@@ -705,7 +705,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
[MESA_FORMAT_RGB_INT32] = {BRW_SURFACEFORMAT_R32G32B32_SINT,
BRW_SURFACEFORMAT_R32G32B32_SINT,
0},
- [MESA_FORMAT_RGBA_INT32] = {BRW_SURFACEFORMAT_NONE, /* Though Render format support is shown, it fails piglit tests. */
+ [MESA_FORMAT_RGBA_INT32] = {BRW_SURFACEFORMAT_R32G32B32A32_SINT, /* Though Render format support is shown, it fails piglit tests. */
BRW_SURFACEFORMAT_R32G32B32A32_SINT,
0},
@@ -868,7 +868,7 @@ brw_format_for_mesa_format(gl_format mesa_format, blorp_process_format *process_
[MESA_FORMAT_RGB9_E5_FLOAT] = {BRW_SURFACEFORMAT_NONE,
BRW_SURFACEFORMAT_R9G9B9E5_SHAREDEXP,
0},
- [MESA_FORMAT_R11_G11_B10_FLOAT] = {BRW_SURFACEFORMAT_NONE,
+ [MESA_FORMAT_R11_G11_B10_FLOAT] = {BRW_SURFACEFORMAT_R11G11B10_FLOAT,
BRW_SURFACEFORMAT_R11G11B10_FLOAT,
0},
@@ -952,18 +952,22 @@ brw_init_surface_formats(struct brw_context *brw)
memset(&ctx->TextureFormatSupported, 0, sizeof(ctx->TextureFormatSupported));
- const unsigned render_not_supported_test =
- render_not_supported_mask | (_mesa_is_desktop_gl(ctx) ? 0 : desktop_gl_sel);
+ const unsigned sample_not_supported_test =
+ sample_not_supported_mask | (_mesa_is_desktop_gl(ctx) ? 0 : desktop_gl_sel);
for (gl_format format = MESA_FORMAT_NONE + 1; format < MESA_FORMAT_COUNT; format++) {
BRW_SURFACE sample_surface, render_surface;
blorp_process_format process_flags;
brw_format_for_mesa_format(format, &process_flags, &render_surface, &sample_surface);
- const bool is_integer = _mesa_is_format_integer_color(format);
+ const GLenum base_format = _mesa_get_format_base_format(format);
+ const bool no_filtering = _mesa_is_format_integer_color(format) ||
+ GL_DEPTH_COMPONENT == base_format ||
+ GL_STENCIL_INDEX == base_format ||
+ GL_DEPTH_STENCIL == base_format;
ctx->TextureFormatSupported[format] =
brw_format_for_sampling(brw, sample_surface) &&
- (brw_format_for_filter(brw, sample_surface) || is_integer) &&
- (0 == (process_flags & sample_not_supported_mask));
+ (brw_format_for_filter(brw, sample_surface) || no_filtering) &&
+ (0 == (process_flags & sample_not_supported_test));
/* Note that GL_EXT_texture_integer says that blending doesn't occur for
* integer, so we don't need hardware support for blending on it. Other
@@ -973,8 +977,8 @@ brw_init_surface_formats(struct brw_context *brw)
brw->format_supported_as_render_target[format] =
brw_format_for_render(brw, render_surface) &&
(brw_format_for_blend(brw, render_surface) || /* SINTs, UINTs, and YCRCB don't alpha blend. */
- is_integer) &&
- 0 == (process_flags & render_not_supported_test);
+ no_filtering) &&
+ 0 == (process_flags & render_not_supported_mask);
}
/* On hardware that lacks support for ETC1, we map ETC1 to RGBX
diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
index 15d05cdb16..7f4cac7c44 100644
--- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
@@ -307,6 +307,9 @@ gen7_update_texture_surface(struct gl_context *ctx,
sampler->sRGBDecode,
&process_flags, dst_format, src_format);
+ if (for_gather && tex_format == BRW_SURFACEFORMAT_R32G32_FLOAT)
+ tex_format = BRW_SURFACEFORMAT_R32G32_FLOAT_LD;
+
surf[0] = translate_tex_target(tObj->Target) << BRW_SURFACE_TYPE_SHIFT |
tex_format << BRW_SURFACE_FORMAT_SHIFT |
gen7_surface_tiling_mode(mt->region->tiling) |