VirtualBox

Ignore:
Timestamp:
Feb 9, 2022 9:14:34 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
149835
Message:

3D/VMSVGA: Helper function to get bpp for a given DXGI_FORMAT, bugref:9845

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/common/wddm/VBoxMPIf.h

    r93115 r93670  
    902902}
    903903
     904#if defined(VBOX_WITH_VMSVGA3D_DX)
     905DECLINLINE(UINT) vboxWddmCalcBitsPerPixelDXGI(DXGI_FORMAT enmFormat)
     906{
     907    switch (enmFormat)
     908    {
     909        case DXGI_FORMAT_UNKNOWN:
     910            return 8;
     911        case DXGI_FORMAT_R32G32B32A32_TYPELESS:
     912        case DXGI_FORMAT_R32G32B32A32_FLOAT:
     913        case DXGI_FORMAT_R32G32B32A32_UINT:
     914        case DXGI_FORMAT_R32G32B32A32_SINT:
     915            return 128;
     916        case DXGI_FORMAT_R32G32B32_TYPELESS:
     917        case DXGI_FORMAT_R32G32B32_FLOAT:
     918        case DXGI_FORMAT_R32G32B32_UINT:
     919        case DXGI_FORMAT_R32G32B32_SINT:
     920            return 96;
     921        case DXGI_FORMAT_R16G16B16A16_TYPELESS:
     922        case DXGI_FORMAT_R16G16B16A16_FLOAT:
     923        case DXGI_FORMAT_R16G16B16A16_UNORM:
     924        case DXGI_FORMAT_R16G16B16A16_UINT:
     925        case DXGI_FORMAT_R16G16B16A16_SNORM:
     926        case DXGI_FORMAT_R16G16B16A16_SINT:
     927        case DXGI_FORMAT_R32G32_TYPELESS:
     928        case DXGI_FORMAT_R32G32_FLOAT:
     929        case DXGI_FORMAT_R32G32_UINT:
     930        case DXGI_FORMAT_R32G32_SINT:
     931            return 64;
     932        case DXGI_FORMAT_R32G8X24_TYPELESS:
     933        case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
     934        case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
     935        case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
     936            return 64;
     937        case DXGI_FORMAT_R10G10B10A2_TYPELESS:
     938        case DXGI_FORMAT_R10G10B10A2_UNORM:
     939        case DXGI_FORMAT_R10G10B10A2_UINT:
     940            return 32;
     941        case DXGI_FORMAT_R11G11B10_FLOAT:
     942            return 32;
     943        case DXGI_FORMAT_R8G8B8A8_TYPELESS:
     944        case DXGI_FORMAT_R8G8B8A8_UNORM:
     945        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
     946        case DXGI_FORMAT_R8G8B8A8_UINT:
     947        case DXGI_FORMAT_R8G8B8A8_SNORM:
     948        case DXGI_FORMAT_R8G8B8A8_SINT:
     949            return 32;
     950        case DXGI_FORMAT_R16G16_TYPELESS:
     951        case DXGI_FORMAT_R16G16_FLOAT:
     952        case DXGI_FORMAT_R16G16_UNORM:
     953        case DXGI_FORMAT_R16G16_UINT:
     954        case DXGI_FORMAT_R16G16_SNORM:
     955        case DXGI_FORMAT_R16G16_SINT:
     956            return 32;
     957        case DXGI_FORMAT_R32_TYPELESS:
     958        case DXGI_FORMAT_D32_FLOAT:
     959        case DXGI_FORMAT_R32_FLOAT:
     960        case DXGI_FORMAT_R32_UINT:
     961        case DXGI_FORMAT_R32_SINT:
     962        case DXGI_FORMAT_R24G8_TYPELESS:
     963        case DXGI_FORMAT_D24_UNORM_S8_UINT:
     964        case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
     965        case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
     966            return 32;
     967        case DXGI_FORMAT_R8G8_TYPELESS:
     968        case DXGI_FORMAT_R8G8_UNORM:
     969        case DXGI_FORMAT_R8G8_UINT:
     970        case DXGI_FORMAT_R8G8_SNORM:
     971        case DXGI_FORMAT_R8G8_SINT:
     972        case DXGI_FORMAT_R16_TYPELESS:
     973        case DXGI_FORMAT_R16_FLOAT:
     974        case DXGI_FORMAT_D16_UNORM:
     975        case DXGI_FORMAT_R16_UNORM:
     976        case DXGI_FORMAT_R16_UINT:
     977        case DXGI_FORMAT_R16_SNORM:
     978        case DXGI_FORMAT_R16_SINT:
     979            return 16;
     980        case DXGI_FORMAT_R8_TYPELESS:
     981        case DXGI_FORMAT_R8_UNORM:
     982        case DXGI_FORMAT_R8_UINT:
     983        case DXGI_FORMAT_R8_SNORM:
     984        case DXGI_FORMAT_R8_SINT:
     985        case DXGI_FORMAT_A8_UNORM:
     986            return 8;
     987        case DXGI_FORMAT_R1_UNORM:
     988            return 1;
     989        case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
     990        case DXGI_FORMAT_R8G8_B8G8_UNORM:
     991        case DXGI_FORMAT_G8R8_G8B8_UNORM:
     992            return 32;
     993        case DXGI_FORMAT_BC1_TYPELESS:
     994        case DXGI_FORMAT_BC1_UNORM:
     995        case DXGI_FORMAT_BC1_UNORM_SRGB:
     996            return 4;
     997        case DXGI_FORMAT_BC2_TYPELESS:
     998        case DXGI_FORMAT_BC2_UNORM:
     999        case DXGI_FORMAT_BC2_UNORM_SRGB:
     1000        case DXGI_FORMAT_BC3_TYPELESS:
     1001        case DXGI_FORMAT_BC3_UNORM:
     1002        case DXGI_FORMAT_BC3_UNORM_SRGB:
     1003            return 8;
     1004        case DXGI_FORMAT_BC4_TYPELESS:
     1005        case DXGI_FORMAT_BC4_UNORM:
     1006        case DXGI_FORMAT_BC4_SNORM:
     1007            return 4;
     1008        case DXGI_FORMAT_BC5_TYPELESS:
     1009        case DXGI_FORMAT_BC5_UNORM:
     1010        case DXGI_FORMAT_BC5_SNORM:
     1011            return 8;
     1012        case DXGI_FORMAT_B5G6R5_UNORM:
     1013        case DXGI_FORMAT_B5G5R5A1_UNORM:
     1014            return 16;
     1015        case DXGI_FORMAT_B8G8R8A8_UNORM:
     1016        case DXGI_FORMAT_B8G8R8X8_UNORM:
     1017        case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
     1018        case DXGI_FORMAT_B8G8R8A8_TYPELESS:
     1019        case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
     1020        case DXGI_FORMAT_B8G8R8X8_TYPELESS:
     1021        case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
     1022            return 32;
     1023        case DXGI_FORMAT_BC6H_TYPELESS:
     1024        case DXGI_FORMAT_BC6H_UF16:
     1025        case DXGI_FORMAT_BC6H_SF16:
     1026        case DXGI_FORMAT_BC7_TYPELESS:
     1027        case DXGI_FORMAT_BC7_UNORM:
     1028        case DXGI_FORMAT_BC7_UNORM_SRGB:
     1029            return 8;
     1030        case DXGI_FORMAT_AYUV:
     1031        case DXGI_FORMAT_Y410:
     1032            return 32;
     1033        case DXGI_FORMAT_Y416:
     1034            return 64;
     1035        case DXGI_FORMAT_NV12:
     1036            return 12;
     1037        case DXGI_FORMAT_P010:
     1038        case DXGI_FORMAT_P016:
     1039            return 24;
     1040        case DXGI_FORMAT_420_OPAQUE:
     1041            return 12;
     1042        case DXGI_FORMAT_YUY2:
     1043            return 32;
     1044        case DXGI_FORMAT_Y210:
     1045        case DXGI_FORMAT_Y216:
     1046            return 64;
     1047        case DXGI_FORMAT_NV11:
     1048            return 12;
     1049        case DXGI_FORMAT_AI44:
     1050        case DXGI_FORMAT_IA44:
     1051        case DXGI_FORMAT_P8:
     1052            return 8;
     1053        case DXGI_FORMAT_A8P8:
     1054        case DXGI_FORMAT_B4G4R4A4_UNORM:
     1055        case DXGI_FORMAT_P208:
     1056        case DXGI_FORMAT_V208:
     1057            return 16;
     1058        case DXGI_FORMAT_V408:
     1059            return 24;
     1060        default:
     1061            AssertBreakpoint();
     1062            return 0;
     1063    }
     1064}
     1065#endif /* VBOX_WITH_VMSVGA3D_DX */
     1066
    9041067#define VBOXWDDM_ARRAY_MAXELEMENTSU32(_t) ((uint32_t)((UINT32_MAX) / sizeof (_t)))
    9051068#define VBOXWDDM_TRAILARRAY_MAXELEMENTSU32(_t, _af) ((uint32_t)(((~(0UL)) - (uint32_t)RT_OFFSETOF(_t, _af[0])) / RT_SIZEOFMEMB(_t, _af[0])))
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette