diff options
author | Mark Mueller <MarkKMueller@gmail.com> | 2013-12-05 12:42:50 -0800 |
---|---|---|
committer | Mark Mueller <MarkKMueller@gmail.com> | 2014-01-13 09:44:31 -0800 |
commit | d0e71bb0a12c54bd266bc942a836a55c8a6d8738 (patch) | |
tree | eee2f57b61623d9ab23d1c4dbcf2763a19f65b05 | |
parent | d85697f3f129f26784c83c1f0e3b4c83b2d3c6f4 (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.c | 60 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 3 |
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) | |