[PATCH 5/9] wined3d: Add 16 bit per channel UNORM formats to wined3d_format_convert_from_float.

Henri Verbeet hverbeet at gmail.com
Mon May 2 10:36:44 CDT 2022


On Sun, 1 May 2022 at 20:39, Stefan Dösinger <stefan at codeweavers.com> wrote:
> @@ -6015,24 +6015,27 @@ void wined3d_format_convert_from_float(const struct wined3d_format *format, cons
>      }
>      float_conv[] =
>      {
> -        {WINED3DFMT_B8G8R8A8_UNORM,    {       255.0f,  255.0f,  255.0f, 255.0f}, {16,  8,  0, 24}},
> -        {WINED3DFMT_B8G8R8X8_UNORM,    {       255.0f,  255.0f,  255.0f, 255.0f}, {16,  8,  0, 24}},
> -        {WINED3DFMT_B8G8R8_UNORM,      {       255.0f,  255.0f,  255.0f, 255.0f}, {16,  8,  0, 24}},
> -        {WINED3DFMT_B5G6R5_UNORM,      {        31.0f,   63.0f,   31.0f,   0.0f}, {11,  5,  0,  0}},
> -        {WINED3DFMT_B5G5R5A1_UNORM,    {        31.0f,   31.0f,   31.0f,   1.0f}, {10,  5,  0, 15}},
> -        {WINED3DFMT_B5G5R5X1_UNORM,    {        31.0f,   31.0f,   31.0f,   1.0f}, {10,  5,  0, 15}},
> -        {WINED3DFMT_R8_UNORM,          {       255.0f,    0.0f,    0.0f,   0.0f}, { 0,  0,  0,  0}},
> -        {WINED3DFMT_A8_UNORM,          {         0.0f,    0.0f,    0.0f, 255.0f}, { 0,  0,  0,  0}},
> -        {WINED3DFMT_B4G4R4A4_UNORM,    {        15.0f,   15.0f,   15.0f,  15.0f}, { 8,  4,  0, 12}},
> -        {WINED3DFMT_B4G4R4X4_UNORM,    {        15.0f,   15.0f,   15.0f,  15.0f}, { 8,  4,  0, 12}},
> -        {WINED3DFMT_B2G3R3_UNORM,      {         7.0f,    7.0f,    3.0f,   0.0f}, { 5,  2,  0,  0}},
> -        {WINED3DFMT_R8G8B8A8_UNORM,    {       255.0f,  255.0f,  255.0f, 255.0f}, { 0,  8, 16, 24}},
> -        {WINED3DFMT_R8G8B8X8_UNORM,    {       255.0f,  255.0f,  255.0f, 255.0f}, { 0,  8, 16, 24}},
> -        {WINED3DFMT_B10G10R10A2_UNORM, {      1023.0f, 1023.0f, 1023.0f,   3.0f}, {20, 10,  0, 30}},
> -        {WINED3DFMT_R10G10B10A2_UNORM, {      1023.0f, 1023.0f, 1023.0f,   3.0f}, { 0, 10, 20, 30}},
> -        {WINED3DFMT_P8_UINT,           {         0.0f,    0.0f,    0.0f, 255.0f}, { 0,  0,  0,  0}},
> -        {WINED3DFMT_S1_UINT_D15_UNORM, {     32767.0f,    0.0f,    0.0f,   0.0f}, { 0,  0,  0,  0}},
> -        {WINED3DFMT_D16_UNORM,         {     65535.0f,    0.0f,    0.0f,   0.0f}, { 0,  0,  0,  0}},
> +        {WINED3DFMT_B8G8R8A8_UNORM,    {       255.0f,   255.0f,   255.0f,  255.0f}, {16,  8,  0, 24}},
> +        {WINED3DFMT_B8G8R8X8_UNORM,    {       255.0f,   255.0f,   255.0f,  255.0f}, {16,  8,  0, 24}},
> +        {WINED3DFMT_B8G8R8_UNORM,      {       255.0f,   255.0f,   255.0f,  255.0f}, {16,  8,  0, 24}},
> +        {WINED3DFMT_B5G6R5_UNORM,      {        31.0f,    63.0f,    31.0f,    0.0f}, {11,  5,  0,  0}},
> +        {WINED3DFMT_B5G5R5A1_UNORM,    {        31.0f,    31.0f,    31.0f,    1.0f}, {10,  5,  0, 15}},
> +        {WINED3DFMT_B5G5R5X1_UNORM,    {        31.0f,    31.0f,    31.0f,    1.0f}, {10,  5,  0, 15}},
> +        {WINED3DFMT_R8_UNORM,          {       255.0f,     0.0f,     0.0f,    0.0f}, { 0,  0,  0,  0}},
> +        {WINED3DFMT_A8_UNORM,          {         0.0f,     0.0f,     0.0f,  255.0f}, { 0,  0,  0,  0}},
> +        {WINED3DFMT_B4G4R4A4_UNORM,    {        15.0f,    15.0f,    15.0f,   15.0f}, { 8,  4,  0, 12}},
> +        {WINED3DFMT_B4G4R4X4_UNORM,    {        15.0f,    15.0f,    15.0f,   15.0f}, { 8,  4,  0, 12}},
> +        {WINED3DFMT_B2G3R3_UNORM,      {         7.0f,     7.0f,     3.0f,    0.0f}, { 5,  2,  0,  0}},
> +        {WINED3DFMT_R8G8B8A8_UNORM,    {       255.0f,   255.0f,   255.0f,  255.0f}, { 0,  8, 16, 24}},
> +        {WINED3DFMT_R8G8B8X8_UNORM,    {       255.0f,   255.0f,   255.0f,  255.0f}, { 0,  8, 16, 24}},
> +        {WINED3DFMT_B10G10R10A2_UNORM, {      1023.0f,  1023.0f,  1023.0f,    3.0f}, {20, 10,  0, 30}},
> +        {WINED3DFMT_R10G10B10A2_UNORM, {      1023.0f,  1023.0f,  1023.0f,    3.0f}, { 0, 10, 20, 30}},
> +        {WINED3DFMT_R16_UNORM,         {     65535.0f,     0.0f,     0.0f,    0.0f}, { 0, 0,   0,  0}},
> +        {WINED3DFMT_R16G16_UNORM,      {     65535.0f, 65535.0f,     0.0f,    0.0f}, { 0, 16,  0,  0}},
> +        {WINED3DFMT_R16G16B16A16_UNORM,{     65535.0f, 65535.0f, 65535.0f,65535.0f}, { 0, 16, 32, 48}},
> +        {WINED3DFMT_P8_UINT,           {         0.0f,     0.0f,     0.0f,  255.0f}, { 0,  0,  0,  0}},
> +        {WINED3DFMT_S1_UINT_D15_UNORM, {     32767.0f,     0.0f,     0.0f,    0.0f}, { 0,  0,  0,  0}},
> +        {WINED3DFMT_D16_UNORM,         {     65535.0f,     0.0f,     0.0f,    0.0f}, { 0,  0,  0,  0}},
>      };

I think this is fine, although it's perhaps also worth pointing out
that between WINED3DFMT_FLAG_NORMALISED, and the component sizes and
offsets in struct wined3d_format, we actually already have the
required information for most of these. The main exception would be
odd formats like WINED3DFMT_P8_UINT.



More information about the wine-devel mailing list