From: Connor McAdams cmcadams@codeweavers.com
Signed-off-by: Connor McAdams cmcadams@codeweavers.com --- dlls/d3dx9_36/surface.c | 16 ++++++++++++++++ dlls/d3dx9_36/util.c | 22 ++++------------------ 2 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c index b0fc6e42ea4..50404f38328 100644 --- a/dlls/d3dx9_36/surface.c +++ b/dlls/d3dx9_36/surface.c @@ -1579,8 +1579,14 @@ void format_to_d3dx_color(const struct pixel_format_desc *format, const BYTE *sr break; } } + else if (dst_ctype == CTYPE_LUMA) + { + *dst_component = dst->value.x; + } else + { *dst_component = 1.0f; + } } }
@@ -1614,6 +1620,16 @@ void format_from_d3dx_color(const struct pixel_format_desc *format, const struct break;
case CTYPE_LUMA: + { + float val = src->value.x * 0.2125f + src->value.y * 0.7154f + src->value.z * 0.0721f; + + if (src_range == RANGE_SNORM) + val = (val + 1.0f) / 2.0f; + + v = d3dx_clamp(val, 0.0f, 1.0f) * ((1u << format->bits[c]) - 1) + 0.5f; + break; + } + case CTYPE_UNORM: { float val = src_component; diff --git a/dlls/d3dx9_36/util.c b/dlls/d3dx9_36/util.c index a9235b9d613..44b289450a8 100644 --- a/dlls/d3dx9_36/util.c +++ b/dlls/d3dx9_36/util.c @@ -22,20 +22,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
-static void la_from_rgba(const struct vec4 *rgba, struct vec4 *la) -{ - la->x = rgba->x * 0.2125f + rgba->y * 0.7154f + rgba->z * 0.0721f; - la->w = rgba->w; -} - -static void la_to_rgba(const struct vec4 *la, struct vec4 *rgba, const PALETTEENTRY *palette) -{ - rgba->x = la->x; - rgba->y = la->x; - rgba->z = la->x; - rgba->w = la->w; -} - static void index_to_rgba(const struct vec4 *index, struct vec4 *rgba, const PALETTEENTRY *palette) { ULONG idx = (ULONG)(index->x * 255.0f + 0.5f); @@ -72,10 +58,10 @@ static const struct pixel_format_desc formats[] = {D3DFMT_A16B16G16R16, {16, 16, 16, 16}, {48, 0, 16, 32}, 8, 1, 1, 8, CTYPE_UNORM, CTYPE_UNORM, 0, NULL, NULL }, {D3DFMT_G16R16, { 0, 16, 16, 0}, { 0, 0, 16, 0}, 4, 1, 1, 4, CTYPE_EMPTY, CTYPE_UNORM, 0, NULL, NULL }, {D3DFMT_A8, { 8, 0, 0, 0}, { 0, 0, 0, 0}, 1, 1, 1, 1, CTYPE_UNORM, CTYPE_EMPTY, 0, NULL, NULL }, - {D3DFMT_A8L8, { 8, 8, 0, 0}, { 8, 0, 0, 0}, 2, 1, 1, 2, CTYPE_UNORM, CTYPE_LUMA, 0, la_from_rgba, la_to_rgba }, - {D3DFMT_A4L4, { 4, 4, 0, 0}, { 4, 0, 0, 0}, 1, 1, 1, 1, CTYPE_UNORM, CTYPE_LUMA, 0, la_from_rgba, la_to_rgba }, - {D3DFMT_L8, { 0, 8, 0, 0}, { 0, 0, 0, 0}, 1, 1, 1, 1, CTYPE_EMPTY, CTYPE_LUMA, 0, la_from_rgba, la_to_rgba }, - {D3DFMT_L16, { 0, 16, 0, 0}, { 0, 0, 0, 0}, 2, 1, 1, 2, CTYPE_EMPTY, CTYPE_LUMA, 0, la_from_rgba, la_to_rgba }, + {D3DFMT_A8L8, { 8, 8, 0, 0}, { 8, 0, 0, 0}, 2, 1, 1, 2, CTYPE_UNORM, CTYPE_LUMA, 0, NULL, NULL }, + {D3DFMT_A4L4, { 4, 4, 0, 0}, { 4, 0, 0, 0}, 1, 1, 1, 1, CTYPE_UNORM, CTYPE_LUMA, 0, NULL, NULL }, + {D3DFMT_L8, { 0, 8, 0, 0}, { 0, 0, 0, 0}, 1, 1, 1, 1, CTYPE_EMPTY, CTYPE_LUMA, 0, NULL, NULL }, + {D3DFMT_L16, { 0, 16, 0, 0}, { 0, 0, 0, 0}, 2, 1, 1, 2, CTYPE_EMPTY, CTYPE_LUMA, 0, NULL, NULL }, {D3DFMT_DXT1, { 0, 0, 0, 0}, { 0, 0, 0, 0}, 1, 4, 4, 8, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT, NULL, NULL }, {D3DFMT_DXT2, { 0, 0, 0, 0}, { 0, 0, 0, 0}, 1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT, NULL, NULL }, {D3DFMT_DXT3, { 0, 0, 0, 0}, { 0, 0, 0, 0}, 1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT, NULL, NULL },