summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2011-11-08 11:05:17 -0800
committerEric Anholt <[email protected]>2011-11-09 12:04:39 -0800
commite56aecf2492e3ca63ea70332a346f3f8414cba6c (patch)
treeb9910a3b58bdc86bb3217b9c13ace99338624960
parentb5444a6ebd48a2bf4c258be98aac831636164e10 (diff)
i965: Add support for 16-bit unorm L, A, and I textures.
While not required by any particular spec version, mplayer was asking for L16 and hoping for actual L16 without checking. The 8 bits allocated led to 10-bit planar video data stored in the lower 10 bits giving only 2 bits of precision in video. While it was an amusing effect, give them what they actually wanted instead. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41461 Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c3
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.c6
2 files changed, 8 insertions, 1 deletions
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 04dc3899a91..66a8a5a53bb 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -80,6 +80,9 @@ brw_format_for_mesa_format(gl_format mesa_format)
[MESA_FORMAT_I8] = BRW_SURFACEFORMAT_I8_UNORM,
[MESA_FORMAT_A8] = BRW_SURFACEFORMAT_A8_UNORM,
[MESA_FORMAT_AL88] = BRW_SURFACEFORMAT_L8A8_UNORM,
+ [MESA_FORMAT_L16] = BRW_SURFACEFORMAT_L16_UNORM,
+ [MESA_FORMAT_A16] = BRW_SURFACEFORMAT_A16_UNORM,
+ [MESA_FORMAT_I16] = BRW_SURFACEFORMAT_I16_UNORM,
[MESA_FORMAT_AL1616] = BRW_SURFACEFORMAT_L16A16_UNORM,
[MESA_FORMAT_R8] = BRW_SURFACEFORMAT_R8_UNORM,
[MESA_FORMAT_R16] = BRW_SURFACEFORMAT_R16_UNORM,
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index 8e8ab730a16..3e10ce05fd4 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -640,8 +640,12 @@ intelInitContext(struct intel_context *intel,
ctx->TextureFormatSupported[MESA_FORMAT_A8] = true;
ctx->TextureFormatSupported[MESA_FORMAT_I8] = true;
ctx->TextureFormatSupported[MESA_FORMAT_AL88] = true;
- if (intel->gen >= 4)
+ if (intel->gen >= 4) {
+ ctx->TextureFormatSupported[MESA_FORMAT_L16] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_A16] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_I16] = true;
ctx->TextureFormatSupported[MESA_FORMAT_AL1616] = true;
+ }
/* Depth and stencil */
ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = true;