VirtualBox

Changeset 86864 in vbox for trunk/src/VBox/Devices/Graphics


Ignore:
Timestamp:
Nov 12, 2020 6:05:51 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
141318
Message:

Devices/Graphics: vmsvga3dQueryCaps for DX backend. bugref:9830

Location:
trunk/src/VBox/Devices/Graphics
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp

    r86856 r86864  
    57655765    {
    57665766        uint32_t val = 0;
    5767         int rc = vmsvga3dQueryCaps(pThisCC, i, &val);
     5767        int rc = vmsvga3dQueryCaps(pThisCC, (SVGA3dDevCapIndex)i, &val);
    57685768        if (RT_SUCCESS(rc))
    57695769            pThis->svga.au32DevCaps[i] = val;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp

    r86838 r86864  
    13751375
    13761376
    1377 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val)
     1377int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val)
    13781378{
    13791379    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win-dx.cpp

    r86855 r86864  
    9494
    9595
    96 DXGI_FORMAT vmsvgaDXSurfaceFormat2Dxgi(SVGA3dSurfaceFormat format)
     96static DXGI_FORMAT vmsvgaDXScreenTargetFormat2Dxgi(SVGA3dSurfaceFormat format)
    9797{
    9898    switch (format)
    9999    {
    100         case SVGA3D_X8R8G8B8: return DXGI_FORMAT_B8G8R8A8_UNORM;
    101         default: break;
     100        /** @todo More formats required? */
     101        case SVGA3D_X8R8G8B8:                   return DXGI_FORMAT_B8G8R8A8_UNORM;
     102        case SVGA3D_A8R8G8B8:                   return DXGI_FORMAT_B8G8R8A8_UNORM;
     103        default:
     104            AssertFailed();
     105            break;
    102106    }
    103107    return DXGI_FORMAT_UNKNOWN;
     108}
     109
     110
     111static DXGI_FORMAT vmsvgaDXSurfaceFormat2Dxgi(SVGA3dSurfaceFormat format)
     112{
     113#define DXGI_FORMAT_ DXGI_FORMAT_UNKNOWN
     114    /** @todo More formats. */
     115    switch (format)
     116    {
     117        case SVGA3D_X8R8G8B8:                   return DXGI_FORMAT_B8G8R8X8_UNORM;
     118        case SVGA3D_A8R8G8B8:                   return DXGI_FORMAT_B8G8R8A8_UNORM;
     119        case SVGA3D_R5G6B5:                     return DXGI_FORMAT_B5G6R5_UNORM;
     120        case SVGA3D_X1R5G5B5:                   return DXGI_FORMAT_B5G5R5A1_UNORM;
     121        case SVGA3D_A1R5G5B5:                   return DXGI_FORMAT_B5G5R5A1_UNORM;
     122        case SVGA3D_A4R4G4B4:                   break; // 11.1 return DXGI_FORMAT_B4G4R4A4_UNORM;
     123        case SVGA3D_Z_D32:                      break;
     124        case SVGA3D_Z_D16:                      return DXGI_FORMAT_D16_UNORM;
     125        case SVGA3D_Z_D24S8:                    return DXGI_FORMAT_D24_UNORM_S8_UINT;
     126        case SVGA3D_Z_D15S1:                    break;
     127        case SVGA3D_LUMINANCE8:                 return DXGI_FORMAT_;
     128        case SVGA3D_LUMINANCE4_ALPHA4:          return DXGI_FORMAT_;
     129        case SVGA3D_LUMINANCE16:                return DXGI_FORMAT_;
     130        case SVGA3D_LUMINANCE8_ALPHA8:          return DXGI_FORMAT_;
     131        case SVGA3D_DXT1:                       return DXGI_FORMAT_;
     132        case SVGA3D_DXT2:                       return DXGI_FORMAT_;
     133        case SVGA3D_DXT3:                       return DXGI_FORMAT_;
     134        case SVGA3D_DXT4:                       return DXGI_FORMAT_;
     135        case SVGA3D_DXT5:                       return DXGI_FORMAT_;
     136        case SVGA3D_BUMPU8V8:                   return DXGI_FORMAT_;
     137        case SVGA3D_BUMPL6V5U5:                 return DXGI_FORMAT_;
     138        case SVGA3D_BUMPX8L8V8U8:               return DXGI_FORMAT_;
     139        case SVGA3D_FORMAT_DEAD1:               break;
     140        case SVGA3D_ARGB_S10E5:                 return DXGI_FORMAT_;
     141        case SVGA3D_ARGB_S23E8:                 return DXGI_FORMAT_;
     142        case SVGA3D_A2R10G10B10:                return DXGI_FORMAT_;
     143        case SVGA3D_V8U8:                       return DXGI_FORMAT_;
     144        case SVGA3D_Q8W8V8U8:                   return DXGI_FORMAT_;
     145        case SVGA3D_CxV8U8:                     return DXGI_FORMAT_;
     146        case SVGA3D_X8L8V8U8:                   return DXGI_FORMAT_;
     147        case SVGA3D_A2W10V10U10:                return DXGI_FORMAT_;
     148        case SVGA3D_ALPHA8:                     return DXGI_FORMAT_;
     149        case SVGA3D_R_S10E5:                    return DXGI_FORMAT_;
     150        case SVGA3D_R_S23E8:                    return DXGI_FORMAT_;
     151        case SVGA3D_RG_S10E5:                   return DXGI_FORMAT_;
     152        case SVGA3D_RG_S23E8:                   return DXGI_FORMAT_;
     153        case SVGA3D_BUFFER:                     return DXGI_FORMAT_;
     154        case SVGA3D_Z_D24X8:                    return DXGI_FORMAT_;
     155        case SVGA3D_V16U16:                     return DXGI_FORMAT_;
     156        case SVGA3D_G16R16:                     return DXGI_FORMAT_;
     157        case SVGA3D_A16B16G16R16:               return DXGI_FORMAT_;
     158        case SVGA3D_UYVY:                       return DXGI_FORMAT_;
     159        case SVGA3D_YUY2:                       return DXGI_FORMAT_;
     160        case SVGA3D_NV12:                       return DXGI_FORMAT_;
     161        case SVGA3D_AYUV:                       return DXGI_FORMAT_;
     162        case SVGA3D_R32G32B32A32_TYPELESS:      return DXGI_FORMAT_R32G32B32A32_TYPELESS;
     163        case SVGA3D_R32G32B32A32_UINT:          return DXGI_FORMAT_R32G32B32A32_UINT;
     164        case SVGA3D_R32G32B32A32_SINT:          return DXGI_FORMAT_R32G32B32A32_SINT;
     165        case SVGA3D_R32G32B32_TYPELESS:         return DXGI_FORMAT_R32G32B32_TYPELESS;
     166        case SVGA3D_R32G32B32_FLOAT:            return DXGI_FORMAT_R32G32B32_FLOAT;
     167        case SVGA3D_R32G32B32_UINT:             return DXGI_FORMAT_R32G32B32_UINT;
     168        case SVGA3D_R32G32B32_SINT:             return DXGI_FORMAT_R32G32B32_SINT;
     169        case SVGA3D_R16G16B16A16_TYPELESS:      return DXGI_FORMAT_R16G16B16A16_TYPELESS;
     170        case SVGA3D_R16G16B16A16_UINT:          return DXGI_FORMAT_R16G16B16A16_UINT;
     171        case SVGA3D_R16G16B16A16_SNORM:         return DXGI_FORMAT_R16G16B16A16_SNORM;
     172        case SVGA3D_R16G16B16A16_SINT:          return DXGI_FORMAT_R16G16B16A16_SINT;
     173        case SVGA3D_R32G32_TYPELESS:            return DXGI_FORMAT_R32G32_TYPELESS;
     174        case SVGA3D_R32G32_UINT:                return DXGI_FORMAT_R32G32_UINT;
     175        case SVGA3D_R32G32_SINT:                return DXGI_FORMAT_R32G32_SINT;
     176        case SVGA3D_R32G8X24_TYPELESS:          return DXGI_FORMAT_R32G8X24_TYPELESS;
     177        case SVGA3D_D32_FLOAT_S8X24_UINT:       return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
     178        case SVGA3D_R32_FLOAT_X8X24:            return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
     179        case SVGA3D_X32_G8X24_UINT:             return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
     180        case SVGA3D_R10G10B10A2_TYPELESS:       return DXGI_FORMAT_R10G10B10A2_TYPELESS;
     181        case SVGA3D_R10G10B10A2_UINT:           return DXGI_FORMAT_R10G10B10A2_UINT;
     182        case SVGA3D_R11G11B10_FLOAT:            return DXGI_FORMAT_R11G11B10_FLOAT;
     183        case SVGA3D_R8G8B8A8_TYPELESS:          return DXGI_FORMAT_R8G8B8A8_TYPELESS;
     184        case SVGA3D_R8G8B8A8_UNORM:             return DXGI_FORMAT_R8G8B8A8_UNORM;
     185        case SVGA3D_R8G8B8A8_UNORM_SRGB:        return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
     186        case SVGA3D_R8G8B8A8_UINT:              return DXGI_FORMAT_R8G8B8A8_UINT;
     187        case SVGA3D_R8G8B8A8_SINT:              return DXGI_FORMAT_R8G8B8A8_SINT;
     188        case SVGA3D_R16G16_TYPELESS:            return DXGI_FORMAT_R16G16_TYPELESS;
     189        case SVGA3D_R16G16_UINT:                return DXGI_FORMAT_R16G16_UINT;
     190        case SVGA3D_R16G16_SINT:                return DXGI_FORMAT_R16G16_SINT;
     191        case SVGA3D_R32_TYPELESS:               return DXGI_FORMAT_R32_TYPELESS;
     192        case SVGA3D_D32_FLOAT:                  return DXGI_FORMAT_D32_FLOAT;
     193        case SVGA3D_R32_UINT:                   return DXGI_FORMAT_R32_UINT;
     194        case SVGA3D_R32_SINT:                   return DXGI_FORMAT_R32_SINT;
     195        case SVGA3D_R24G8_TYPELESS:             return DXGI_FORMAT_R24G8_TYPELESS;
     196        case SVGA3D_D24_UNORM_S8_UINT:          return DXGI_FORMAT_D24_UNORM_S8_UINT;
     197        case SVGA3D_R24_UNORM_X8:               return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
     198        case SVGA3D_X24_G8_UINT:                return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
     199        case SVGA3D_R8G8_TYPELESS:              return DXGI_FORMAT_R8G8_TYPELESS;
     200        case SVGA3D_R8G8_UNORM:                 return DXGI_FORMAT_R8G8_UNORM;
     201        case SVGA3D_R8G8_UINT:                  return DXGI_FORMAT_R8G8_UINT;
     202        case SVGA3D_R8G8_SINT:                  return DXGI_FORMAT_R8G8_SINT;
     203        case SVGA3D_R16_TYPELESS:               return DXGI_FORMAT_R16_TYPELESS;
     204        case SVGA3D_R16_UNORM:                  return DXGI_FORMAT_R16_UNORM;
     205        case SVGA3D_R16_UINT:                   return DXGI_FORMAT_R16_UINT;
     206        case SVGA3D_R16_SNORM:                  return DXGI_FORMAT_R16_SNORM;
     207        case SVGA3D_R16_SINT:                   return DXGI_FORMAT_R16_SINT;
     208        case SVGA3D_R8_TYPELESS:                return DXGI_FORMAT_R8_TYPELESS;
     209        case SVGA3D_R8_UNORM:                   return DXGI_FORMAT_R8_UNORM;
     210        case SVGA3D_R8_UINT:                    return DXGI_FORMAT_R8_UINT;
     211        case SVGA3D_R8_SNORM:                   return DXGI_FORMAT_R8_SNORM;
     212        case SVGA3D_R8_SINT:                    return DXGI_FORMAT_R8_SINT;
     213        case SVGA3D_P8:                         break;
     214        case SVGA3D_R9G9B9E5_SHAREDEXP:         return DXGI_FORMAT_R9G9B9E5_SHAREDEXP;
     215        case SVGA3D_R8G8_B8G8_UNORM:            return DXGI_FORMAT_R8G8_B8G8_UNORM;
     216        case SVGA3D_G8R8_G8B8_UNORM:            return DXGI_FORMAT_G8R8_G8B8_UNORM;
     217        case SVGA3D_BC1_TYPELESS:               return DXGI_FORMAT_BC1_TYPELESS;
     218        case SVGA3D_BC1_UNORM_SRGB:             return DXGI_FORMAT_BC1_UNORM_SRGB;
     219        case SVGA3D_BC2_TYPELESS:               return DXGI_FORMAT_BC2_TYPELESS;
     220        case SVGA3D_BC2_UNORM_SRGB:             return DXGI_FORMAT_BC2_UNORM_SRGB;
     221        case SVGA3D_BC3_TYPELESS:               return DXGI_FORMAT_BC3_TYPELESS;
     222        case SVGA3D_BC3_UNORM_SRGB:             return DXGI_FORMAT_BC3_UNORM_SRGB;
     223        case SVGA3D_BC4_TYPELESS:               return DXGI_FORMAT_BC4_TYPELESS;
     224        case SVGA3D_ATI1:                       break;
     225        case SVGA3D_BC4_SNORM:                  return DXGI_FORMAT_BC4_SNORM;
     226        case SVGA3D_BC5_TYPELESS:               return DXGI_FORMAT_BC5_TYPELESS;
     227        case SVGA3D_ATI2:                       break;
     228        case SVGA3D_BC5_SNORM:                  return DXGI_FORMAT_BC5_SNORM;
     229        case SVGA3D_R10G10B10_XR_BIAS_A2_UNORM: return DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM;
     230        case SVGA3D_B8G8R8A8_TYPELESS:          return DXGI_FORMAT_B8G8R8A8_TYPELESS;
     231        case SVGA3D_B8G8R8A8_UNORM_SRGB:        return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
     232        case SVGA3D_B8G8R8X8_TYPELESS:          return DXGI_FORMAT_B8G8R8X8_TYPELESS;
     233        case SVGA3D_B8G8R8X8_UNORM_SRGB:        return DXGI_FORMAT_B8G8R8X8_UNORM_SRGB;
     234        case SVGA3D_Z_DF16:                     break;
     235        case SVGA3D_Z_DF24:                     break;
     236        case SVGA3D_Z_D24S8_INT:                return DXGI_FORMAT_D24_UNORM_S8_UINT;
     237        case SVGA3D_YV12:                       break;
     238        case SVGA3D_R32G32B32A32_FLOAT:         return DXGI_FORMAT_R32G32B32A32_FLOAT;
     239        case SVGA3D_R16G16B16A16_FLOAT:         return DXGI_FORMAT_R16G16B16A16_FLOAT;
     240        case SVGA3D_R16G16B16A16_UNORM:         return DXGI_FORMAT_R16G16B16A16_UNORM;
     241        case SVGA3D_R32G32_FLOAT:               return DXGI_FORMAT_R32G32_FLOAT;
     242        case SVGA3D_R10G10B10A2_UNORM:          return DXGI_FORMAT_R10G10B10A2_UNORM;
     243        case SVGA3D_R8G8B8A8_SNORM:             return DXGI_FORMAT_R8G8B8A8_SNORM;
     244        case SVGA3D_R16G16_FLOAT:               return DXGI_FORMAT_R16G16_FLOAT;
     245        case SVGA3D_R16G16_UNORM:               return DXGI_FORMAT_R16G16_UNORM;
     246        case SVGA3D_R16G16_SNORM:               return DXGI_FORMAT_R16G16_SNORM;
     247        case SVGA3D_R32_FLOAT:                  return DXGI_FORMAT_R32_FLOAT;
     248        case SVGA3D_R8G8_SNORM:                 return DXGI_FORMAT_R8G8_SNORM;
     249        case SVGA3D_R16_FLOAT:                  return DXGI_FORMAT_R16_FLOAT;
     250        case SVGA3D_D16_UNORM:                  return DXGI_FORMAT_D16_UNORM;
     251        case SVGA3D_A8_UNORM:                   return DXGI_FORMAT_A8_UNORM;
     252        case SVGA3D_BC1_UNORM:                  return DXGI_FORMAT_BC1_UNORM;
     253        case SVGA3D_BC2_UNORM:                  return DXGI_FORMAT_BC2_UNORM;
     254        case SVGA3D_BC3_UNORM:                  return DXGI_FORMAT_BC3_UNORM;
     255        case SVGA3D_B5G6R5_UNORM:               return DXGI_FORMAT_B5G6R5_UNORM;
     256        case SVGA3D_B5G5R5A1_UNORM:             return DXGI_FORMAT_B5G5R5A1_UNORM;
     257        case SVGA3D_B8G8R8A8_UNORM:             return DXGI_FORMAT_B8G8R8A8_UNORM;
     258        case SVGA3D_B8G8R8X8_UNORM:             return DXGI_FORMAT_B8G8R8X8_UNORM;
     259        case SVGA3D_BC4_UNORM:                  return DXGI_FORMAT_BC4_UNORM;
     260        case SVGA3D_BC5_UNORM:                  return DXGI_FORMAT_BC5_UNORM;
     261
     262        case SVGA3D_FORMAT_INVALID:
     263        case SVGA3D_FORMAT_MAX:                 break;
     264    }
     265    // AssertFailed();
     266    return DXGI_FORMAT_UNKNOWN;
     267#undef DXGI_FORMAT_
     268}
     269
     270
     271static SVGA3dSurfaceFormat vmsvgaDXDevCapSurfaceFmt2Format(SVGA3dDevCapIndex enmDevCap)
     272{
     273    switch (enmDevCap)
     274    {
     275        case SVGA3D_DEVCAP_SURFACEFMT_X8R8G8B8:                 return SVGA3D_X8R8G8B8;
     276        case SVGA3D_DEVCAP_SURFACEFMT_A8R8G8B8:                 return SVGA3D_A8R8G8B8;
     277        case SVGA3D_DEVCAP_SURFACEFMT_A2R10G10B10:              return SVGA3D_A2R10G10B10;
     278        case SVGA3D_DEVCAP_SURFACEFMT_X1R5G5B5:                 return SVGA3D_X1R5G5B5;
     279        case SVGA3D_DEVCAP_SURFACEFMT_A1R5G5B5:                 return SVGA3D_A1R5G5B5;
     280        case SVGA3D_DEVCAP_SURFACEFMT_A4R4G4B4:                 return SVGA3D_A4R4G4B4;
     281        case SVGA3D_DEVCAP_SURFACEFMT_R5G6B5:                   return SVGA3D_R5G6B5;
     282        case SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE16:              return SVGA3D_LUMINANCE16;
     283        case SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8_ALPHA8:        return SVGA3D_LUMINANCE8_ALPHA8;
     284        case SVGA3D_DEVCAP_SURFACEFMT_ALPHA8:                   return SVGA3D_ALPHA8;
     285        case SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8:               return SVGA3D_LUMINANCE8;
     286        case SVGA3D_DEVCAP_SURFACEFMT_Z_D16:                    return SVGA3D_Z_D16;
     287        case SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8:                  return SVGA3D_Z_D24S8;
     288        case SVGA3D_DEVCAP_SURFACEFMT_Z_D24X8:                  return SVGA3D_Z_D24X8;
     289        case SVGA3D_DEVCAP_SURFACEFMT_DXT1:                     return SVGA3D_DXT1;
     290        case SVGA3D_DEVCAP_SURFACEFMT_DXT2:                     return SVGA3D_DXT2;
     291        case SVGA3D_DEVCAP_SURFACEFMT_DXT3:                     return SVGA3D_DXT3;
     292        case SVGA3D_DEVCAP_SURFACEFMT_DXT4:                     return SVGA3D_DXT4;
     293        case SVGA3D_DEVCAP_SURFACEFMT_DXT5:                     return SVGA3D_DXT5;
     294        case SVGA3D_DEVCAP_SURFACEFMT_BUMPX8L8V8U8:             return SVGA3D_BUMPX8L8V8U8;
     295        case SVGA3D_DEVCAP_SURFACEFMT_A2W10V10U10:              return SVGA3D_A2W10V10U10;
     296        case SVGA3D_DEVCAP_SURFACEFMT_BUMPU8V8:                 return SVGA3D_BUMPU8V8;
     297        case SVGA3D_DEVCAP_SURFACEFMT_Q8W8V8U8:                 return SVGA3D_Q8W8V8U8;
     298        case SVGA3D_DEVCAP_SURFACEFMT_CxV8U8:                   return SVGA3D_CxV8U8;
     299        case SVGA3D_DEVCAP_SURFACEFMT_R_S10E5:                  return SVGA3D_R_S10E5;
     300        case SVGA3D_DEVCAP_SURFACEFMT_R_S23E8:                  return SVGA3D_R_S23E8;
     301        case SVGA3D_DEVCAP_SURFACEFMT_RG_S10E5:                 return SVGA3D_RG_S10E5;
     302        case SVGA3D_DEVCAP_SURFACEFMT_RG_S23E8:                 return SVGA3D_RG_S23E8;
     303        case SVGA3D_DEVCAP_SURFACEFMT_ARGB_S10E5:               return SVGA3D_ARGB_S10E5;
     304        case SVGA3D_DEVCAP_SURFACEFMT_ARGB_S23E8:               return SVGA3D_ARGB_S23E8;
     305        case SVGA3D_DEVCAP_SURFACEFMT_V16U16:                   return SVGA3D_V16U16;
     306        case SVGA3D_DEVCAP_SURFACEFMT_G16R16:                   return SVGA3D_G16R16;
     307        case SVGA3D_DEVCAP_SURFACEFMT_A16B16G16R16:             return SVGA3D_A16B16G16R16;
     308        case SVGA3D_DEVCAP_SURFACEFMT_UYVY:                     return SVGA3D_UYVY;
     309        case SVGA3D_DEVCAP_SURFACEFMT_YUY2:                     return SVGA3D_YUY2;
     310        case SVGA3D_DEVCAP_SURFACEFMT_NV12:                     return SVGA3D_NV12;
     311        case SVGA3D_DEVCAP_SURFACEFMT_AYUV:                     return SVGA3D_AYUV;
     312        case SVGA3D_DEVCAP_SURFACEFMT_Z_DF16:                   return SVGA3D_Z_DF16;
     313        case SVGA3D_DEVCAP_SURFACEFMT_Z_DF24:                   return SVGA3D_Z_DF24;
     314        case SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT:              return SVGA3D_Z_D24S8_INT;
     315        case SVGA3D_DEVCAP_SURFACEFMT_ATI1:                     return SVGA3D_ATI1;
     316        case SVGA3D_DEVCAP_SURFACEFMT_ATI2:                     return SVGA3D_ATI2;
     317        case SVGA3D_DEVCAP_SURFACEFMT_YV12:                     return SVGA3D_YV12;
     318        default:
     319            AssertFailed();
     320            break;
     321    }
     322    return SVGA3D_FORMAT_INVALID;
     323}
     324
     325
     326static SVGA3dSurfaceFormat vmsvgaDXDevCapDxfmt2Format(SVGA3dDevCapIndex enmDevCap)
     327{
     328    switch (enmDevCap)
     329    {
     330        case SVGA3D_DEVCAP_DXFMT_X8R8G8B8:                      return SVGA3D_X8R8G8B8;
     331        case SVGA3D_DEVCAP_DXFMT_A8R8G8B8:                      return SVGA3D_A8R8G8B8;
     332        case SVGA3D_DEVCAP_DXFMT_R5G6B5:                        return SVGA3D_R5G6B5;
     333        case SVGA3D_DEVCAP_DXFMT_X1R5G5B5:                      return SVGA3D_X1R5G5B5;
     334        case SVGA3D_DEVCAP_DXFMT_A1R5G5B5:                      return SVGA3D_A1R5G5B5;
     335        case SVGA3D_DEVCAP_DXFMT_A4R4G4B4:                      return SVGA3D_A4R4G4B4;
     336        case SVGA3D_DEVCAP_DXFMT_Z_D32:                         return SVGA3D_Z_D32;
     337        case SVGA3D_DEVCAP_DXFMT_Z_D16:                         return SVGA3D_Z_D16;
     338        case SVGA3D_DEVCAP_DXFMT_Z_D24S8:                       return SVGA3D_Z_D24S8;
     339        case SVGA3D_DEVCAP_DXFMT_Z_D15S1:                       return SVGA3D_Z_D15S1;
     340        case SVGA3D_DEVCAP_DXFMT_LUMINANCE8:                    return SVGA3D_LUMINANCE8;
     341        case SVGA3D_DEVCAP_DXFMT_LUMINANCE4_ALPHA4:             return SVGA3D_LUMINANCE4_ALPHA4;
     342        case SVGA3D_DEVCAP_DXFMT_LUMINANCE16:                   return SVGA3D_LUMINANCE16;
     343        case SVGA3D_DEVCAP_DXFMT_LUMINANCE8_ALPHA8:             return SVGA3D_LUMINANCE8_ALPHA8;
     344        case SVGA3D_DEVCAP_DXFMT_DXT1:                          return SVGA3D_DXT1;
     345        case SVGA3D_DEVCAP_DXFMT_DXT2:                          return SVGA3D_DXT2;
     346        case SVGA3D_DEVCAP_DXFMT_DXT3:                          return SVGA3D_DXT3;
     347        case SVGA3D_DEVCAP_DXFMT_DXT4:                          return SVGA3D_DXT4;
     348        case SVGA3D_DEVCAP_DXFMT_DXT5:                          return SVGA3D_DXT5;
     349        case SVGA3D_DEVCAP_DXFMT_BUMPU8V8:                      return SVGA3D_BUMPU8V8;
     350        case SVGA3D_DEVCAP_DXFMT_BUMPL6V5U5:                    return SVGA3D_BUMPL6V5U5;
     351        case SVGA3D_DEVCAP_DXFMT_BUMPX8L8V8U8:                  return SVGA3D_BUMPX8L8V8U8;
     352        case SVGA3D_DEVCAP_DXFMT_FORMAT_DEAD1:                  return SVGA3D_FORMAT_DEAD1;
     353        case SVGA3D_DEVCAP_DXFMT_ARGB_S10E5:                    return SVGA3D_ARGB_S10E5;
     354        case SVGA3D_DEVCAP_DXFMT_ARGB_S23E8:                    return SVGA3D_ARGB_S23E8;
     355        case SVGA3D_DEVCAP_DXFMT_A2R10G10B10:                   return SVGA3D_A2R10G10B10;
     356        case SVGA3D_DEVCAP_DXFMT_V8U8:                          return SVGA3D_V8U8;
     357        case SVGA3D_DEVCAP_DXFMT_Q8W8V8U8:                      return SVGA3D_Q8W8V8U8;
     358        case SVGA3D_DEVCAP_DXFMT_CxV8U8:                        return SVGA3D_CxV8U8;
     359        case SVGA3D_DEVCAP_DXFMT_X8L8V8U8:                      return SVGA3D_X8L8V8U8;
     360        case SVGA3D_DEVCAP_DXFMT_A2W10V10U10:                   return SVGA3D_A2W10V10U10;
     361        case SVGA3D_DEVCAP_DXFMT_ALPHA8:                        return SVGA3D_ALPHA8;
     362        case SVGA3D_DEVCAP_DXFMT_R_S10E5:                       return SVGA3D_R_S10E5;
     363        case SVGA3D_DEVCAP_DXFMT_R_S23E8:                       return SVGA3D_R_S23E8;
     364        case SVGA3D_DEVCAP_DXFMT_RG_S10E5:                      return SVGA3D_RG_S10E5;
     365        case SVGA3D_DEVCAP_DXFMT_RG_S23E8:                      return SVGA3D_RG_S23E8;
     366        case SVGA3D_DEVCAP_DXFMT_BUFFER:                        return SVGA3D_BUFFER;
     367        case SVGA3D_DEVCAP_DXFMT_Z_D24X8:                       return SVGA3D_Z_D24X8;
     368        case SVGA3D_DEVCAP_DXFMT_V16U16:                        return SVGA3D_V16U16;
     369        case SVGA3D_DEVCAP_DXFMT_G16R16:                        return SVGA3D_G16R16;
     370        case SVGA3D_DEVCAP_DXFMT_A16B16G16R16:                  return SVGA3D_A16B16G16R16;
     371        case SVGA3D_DEVCAP_DXFMT_UYVY:                          return SVGA3D_UYVY;
     372        case SVGA3D_DEVCAP_DXFMT_YUY2:                          return SVGA3D_YUY2;
     373        case SVGA3D_DEVCAP_DXFMT_NV12:                          return SVGA3D_NV12;
     374        case SVGA3D_DEVCAP_DXFMT_AYUV:                          return SVGA3D_AYUV;
     375        case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_TYPELESS:         return SVGA3D_R32G32B32A32_TYPELESS;
     376        case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_UINT:             return SVGA3D_R32G32B32A32_UINT;
     377        case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_SINT:             return SVGA3D_R32G32B32A32_SINT;
     378        case SVGA3D_DEVCAP_DXFMT_R32G32B32_TYPELESS:            return SVGA3D_R32G32B32_TYPELESS;
     379        case SVGA3D_DEVCAP_DXFMT_R32G32B32_FLOAT:               return SVGA3D_R32G32B32_FLOAT;
     380        case SVGA3D_DEVCAP_DXFMT_R32G32B32_UINT:                return SVGA3D_R32G32B32_UINT;
     381        case SVGA3D_DEVCAP_DXFMT_R32G32B32_SINT:                return SVGA3D_R32G32B32_SINT;
     382        case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_TYPELESS:         return SVGA3D_R16G16B16A16_TYPELESS;
     383        case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UINT:             return SVGA3D_R16G16B16A16_UINT;
     384        case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SNORM:            return SVGA3D_R16G16B16A16_SNORM;
     385        case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SINT:             return SVGA3D_R16G16B16A16_SINT;
     386        case SVGA3D_DEVCAP_DXFMT_R32G32_TYPELESS:               return SVGA3D_R32G32_TYPELESS;
     387        case SVGA3D_DEVCAP_DXFMT_R32G32_UINT:                   return SVGA3D_R32G32_UINT;
     388        case SVGA3D_DEVCAP_DXFMT_R32G32_SINT:                   return SVGA3D_R32G32_SINT;
     389        case SVGA3D_DEVCAP_DXFMT_R32G8X24_TYPELESS:             return SVGA3D_R32G8X24_TYPELESS;
     390        case SVGA3D_DEVCAP_DXFMT_D32_FLOAT_S8X24_UINT:          return SVGA3D_D32_FLOAT_S8X24_UINT;
     391        case SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24_TYPELESS:      return SVGA3D_R32_FLOAT_X8X24;
     392        case SVGA3D_DEVCAP_DXFMT_X32_TYPELESS_G8X24_UINT:       return SVGA3D_X32_G8X24_UINT;
     393        case SVGA3D_DEVCAP_DXFMT_R10G10B10A2_TYPELESS:          return SVGA3D_R10G10B10A2_TYPELESS;
     394        case SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UINT:              return SVGA3D_R10G10B10A2_UINT;
     395        case SVGA3D_DEVCAP_DXFMT_R11G11B10_FLOAT:               return SVGA3D_R11G11B10_FLOAT;
     396        case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_TYPELESS:             return SVGA3D_R8G8B8A8_TYPELESS;
     397        case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM:                return SVGA3D_R8G8B8A8_UNORM;
     398        case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM_SRGB:           return SVGA3D_R8G8B8A8_UNORM_SRGB;
     399        case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UINT:                 return SVGA3D_R8G8B8A8_UINT;
     400        case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SINT:                 return SVGA3D_R8G8B8A8_SINT;
     401        case SVGA3D_DEVCAP_DXFMT_R16G16_TYPELESS:               return SVGA3D_R16G16_TYPELESS;
     402        case SVGA3D_DEVCAP_DXFMT_R16G16_UINT:                   return SVGA3D_R16G16_UINT;
     403        case SVGA3D_DEVCAP_DXFMT_R16G16_SINT:                   return SVGA3D_R16G16_SINT;
     404        case SVGA3D_DEVCAP_DXFMT_R32_TYPELESS:                  return SVGA3D_R32_TYPELESS;
     405        case SVGA3D_DEVCAP_DXFMT_D32_FLOAT:                     return SVGA3D_D32_FLOAT;
     406        case SVGA3D_DEVCAP_DXFMT_R32_UINT:                      return SVGA3D_R32_UINT;
     407        case SVGA3D_DEVCAP_DXFMT_R32_SINT:                      return SVGA3D_R32_SINT;
     408        case SVGA3D_DEVCAP_DXFMT_R24G8_TYPELESS:                return SVGA3D_R24G8_TYPELESS;
     409        case SVGA3D_DEVCAP_DXFMT_D24_UNORM_S8_UINT:             return SVGA3D_D24_UNORM_S8_UINT;
     410        case SVGA3D_DEVCAP_DXFMT_R24_UNORM_X8_TYPELESS:         return SVGA3D_R24_UNORM_X8;
     411        case SVGA3D_DEVCAP_DXFMT_X24_TYPELESS_G8_UINT:          return SVGA3D_X24_G8_UINT;
     412        case SVGA3D_DEVCAP_DXFMT_R8G8_TYPELESS:                 return SVGA3D_R8G8_TYPELESS;
     413        case SVGA3D_DEVCAP_DXFMT_R8G8_UNORM:                    return SVGA3D_R8G8_UNORM;
     414        case SVGA3D_DEVCAP_DXFMT_R8G8_UINT:                     return SVGA3D_R8G8_UINT;
     415        case SVGA3D_DEVCAP_DXFMT_R8G8_SINT:                     return SVGA3D_R8G8_SINT;
     416        case SVGA3D_DEVCAP_DXFMT_R16_TYPELESS:                  return SVGA3D_R16_TYPELESS;
     417        case SVGA3D_DEVCAP_DXFMT_R16_UNORM:                     return SVGA3D_R16_UNORM;
     418        case SVGA3D_DEVCAP_DXFMT_R16_UINT:                      return SVGA3D_R16_UINT;
     419        case SVGA3D_DEVCAP_DXFMT_R16_SNORM:                     return SVGA3D_R16_SNORM;
     420        case SVGA3D_DEVCAP_DXFMT_R16_SINT:                      return SVGA3D_R16_SINT;
     421        case SVGA3D_DEVCAP_DXFMT_R8_TYPELESS:                   return SVGA3D_R8_TYPELESS;
     422        case SVGA3D_DEVCAP_DXFMT_R8_UNORM:                      return SVGA3D_R8_UNORM;
     423        case SVGA3D_DEVCAP_DXFMT_R8_UINT:                       return SVGA3D_R8_UINT;
     424        case SVGA3D_DEVCAP_DXFMT_R8_SNORM:                      return SVGA3D_R8_SNORM;
     425        case SVGA3D_DEVCAP_DXFMT_R8_SINT:                       return SVGA3D_R8_SINT;
     426        case SVGA3D_DEVCAP_DXFMT_P8:                            return SVGA3D_P8;
     427        case SVGA3D_DEVCAP_DXFMT_R9G9B9E5_SHAREDEXP:            return SVGA3D_R9G9B9E5_SHAREDEXP;
     428        case SVGA3D_DEVCAP_DXFMT_R8G8_B8G8_UNORM:               return SVGA3D_R8G8_B8G8_UNORM;
     429        case SVGA3D_DEVCAP_DXFMT_G8R8_G8B8_UNORM:               return SVGA3D_G8R8_G8B8_UNORM;
     430        case SVGA3D_DEVCAP_DXFMT_BC1_TYPELESS:                  return SVGA3D_BC1_TYPELESS;
     431        case SVGA3D_DEVCAP_DXFMT_BC1_UNORM_SRGB:                return SVGA3D_BC1_UNORM_SRGB;
     432        case SVGA3D_DEVCAP_DXFMT_BC2_TYPELESS:                  return SVGA3D_BC2_TYPELESS;
     433        case SVGA3D_DEVCAP_DXFMT_BC2_UNORM_SRGB:                return SVGA3D_BC2_UNORM_SRGB;
     434        case SVGA3D_DEVCAP_DXFMT_BC3_TYPELESS:                  return SVGA3D_BC3_TYPELESS;
     435        case SVGA3D_DEVCAP_DXFMT_BC3_UNORM_SRGB:                return SVGA3D_BC3_UNORM_SRGB;
     436        case SVGA3D_DEVCAP_DXFMT_BC4_TYPELESS:                  return SVGA3D_BC4_TYPELESS;
     437        case SVGA3D_DEVCAP_DXFMT_ATI1:                          return SVGA3D_ATI1;
     438        case SVGA3D_DEVCAP_DXFMT_BC4_SNORM:                     return SVGA3D_BC4_SNORM;
     439        case SVGA3D_DEVCAP_DXFMT_BC5_TYPELESS:                  return SVGA3D_BC5_TYPELESS;
     440        case SVGA3D_DEVCAP_DXFMT_ATI2:                          return SVGA3D_ATI2;
     441        case SVGA3D_DEVCAP_DXFMT_BC5_SNORM:                     return SVGA3D_BC5_SNORM;
     442        case SVGA3D_DEVCAP_DXFMT_R10G10B10_XR_BIAS_A2_UNORM:    return SVGA3D_R10G10B10_XR_BIAS_A2_UNORM;
     443        case SVGA3D_DEVCAP_DXFMT_B8G8R8A8_TYPELESS:             return SVGA3D_B8G8R8A8_TYPELESS;
     444        case SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM_SRGB:           return SVGA3D_B8G8R8A8_UNORM_SRGB;
     445        case SVGA3D_DEVCAP_DXFMT_B8G8R8X8_TYPELESS:             return SVGA3D_B8G8R8X8_TYPELESS;
     446        case SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM_SRGB:           return SVGA3D_B8G8R8X8_UNORM_SRGB;
     447        case SVGA3D_DEVCAP_DXFMT_Z_DF16:                        return SVGA3D_Z_DF16;
     448        case SVGA3D_DEVCAP_DXFMT_Z_DF24:                        return SVGA3D_Z_DF24;
     449        case SVGA3D_DEVCAP_DXFMT_Z_D24S8_INT:                   return SVGA3D_Z_D24S8_INT;
     450        case SVGA3D_DEVCAP_DXFMT_YV12:                          return SVGA3D_YV12;
     451        case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_FLOAT:            return SVGA3D_R32G32B32A32_FLOAT;
     452        case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_FLOAT:            return SVGA3D_R16G16B16A16_FLOAT;
     453        case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UNORM:            return SVGA3D_R16G16B16A16_UNORM;
     454        case SVGA3D_DEVCAP_DXFMT_R32G32_FLOAT:                  return SVGA3D_R32G32_FLOAT;
     455        case SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UNORM:             return SVGA3D_R10G10B10A2_UNORM;
     456        case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SNORM:                return SVGA3D_R8G8B8A8_SNORM;
     457        case SVGA3D_DEVCAP_DXFMT_R16G16_FLOAT:                  return SVGA3D_R16G16_FLOAT;
     458        case SVGA3D_DEVCAP_DXFMT_R16G16_UNORM:                  return SVGA3D_R16G16_UNORM;
     459        case SVGA3D_DEVCAP_DXFMT_R16G16_SNORM:                  return SVGA3D_R16G16_SNORM;
     460        case SVGA3D_DEVCAP_DXFMT_R32_FLOAT:                     return SVGA3D_R32_FLOAT;
     461        case SVGA3D_DEVCAP_DXFMT_R8G8_SNORM:                    return SVGA3D_R8G8_SNORM;
     462        case SVGA3D_DEVCAP_DXFMT_R16_FLOAT:                     return SVGA3D_R16_FLOAT;
     463        case SVGA3D_DEVCAP_DXFMT_D16_UNORM:                     return SVGA3D_D16_UNORM;
     464        case SVGA3D_DEVCAP_DXFMT_A8_UNORM:                      return SVGA3D_A8_UNORM;
     465        case SVGA3D_DEVCAP_DXFMT_BC1_UNORM:                     return SVGA3D_BC1_UNORM;
     466        case SVGA3D_DEVCAP_DXFMT_BC2_UNORM:                     return SVGA3D_BC2_UNORM;
     467        case SVGA3D_DEVCAP_DXFMT_BC3_UNORM:                     return SVGA3D_BC3_UNORM;
     468        case SVGA3D_DEVCAP_DXFMT_B5G6R5_UNORM:                  return SVGA3D_B5G6R5_UNORM;
     469        case SVGA3D_DEVCAP_DXFMT_B5G5R5A1_UNORM:                return SVGA3D_B5G5R5A1_UNORM;
     470        case SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM:                return SVGA3D_B8G8R8A8_UNORM;
     471        case SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM:                return SVGA3D_B8G8R8X8_UNORM;
     472        case SVGA3D_DEVCAP_DXFMT_BC4_UNORM:                     return SVGA3D_BC4_UNORM;
     473        case SVGA3D_DEVCAP_DXFMT_BC5_UNORM:                     return SVGA3D_BC5_UNORM;
     474        default:
     475            AssertFailed();
     476            break;
     477    }
     478    return SVGA3D_FORMAT_INVALID;
     479}
     480
     481
     482static int vmsvgaDXCheckFormatSupportPreDX(PVMSVGA3DSTATE pState, SVGA3dSurfaceFormat enmFormat, uint32_t *pu32DevCap)
     483{
     484    int rc = VINF_SUCCESS;
     485
     486    *pu32DevCap = 0;
     487
     488    DXGI_FORMAT const dxgiFormat = vmsvgaDXSurfaceFormat2Dxgi(enmFormat);
     489    if (dxgiFormat != DXGI_FORMAT_UNKNOWN)
     490    {
     491        RT_NOREF(pState);
     492        /** @todo Implement */
     493    }
     494    else
     495        rc = VERR_NOT_SUPPORTED;
     496    return rc;
     497}
     498
     499static int vmsvgaDXCheckFormatSupport(PVMSVGA3DSTATE pState, SVGA3dSurfaceFormat enmFormat, uint32_t *pu32DevCap)
     500{
     501    int rc = VINF_SUCCESS;
     502
     503    *pu32DevCap = 0;
     504
     505    DXGI_FORMAT const dxgiFormat = vmsvgaDXSurfaceFormat2Dxgi(enmFormat);
     506    if (dxgiFormat != DXGI_FORMAT_UNKNOWN)
     507    {
     508        ID3D11Device *pDevice = pState->pBackend->pDevice;
     509        UINT FormatSupport = 0;
     510        HRESULT hr = pDevice->CheckFormatSupport(dxgiFormat, &FormatSupport);
     511        if (SUCCEEDED(hr))
     512        {
     513            *pu32DevCap |= SVGA3D_DXFMT_SUPPORTED;
     514
     515            if (FormatSupport & D3D11_FORMAT_SUPPORT_SHADER_SAMPLE)
     516                *pu32DevCap |= SVGA3D_DXFMT_SHADER_SAMPLE;
     517
     518            if (FormatSupport & D3D11_FORMAT_SUPPORT_RENDER_TARGET)
     519                *pu32DevCap |= SVGA3D_DXFMT_COLOR_RENDERTARGET;
     520
     521            if (FormatSupport & D3D11_FORMAT_SUPPORT_DEPTH_STENCIL)
     522                *pu32DevCap |= SVGA3D_DXFMT_DEPTH_RENDERTARGET;
     523
     524            if (FormatSupport & D3D11_FORMAT_SUPPORT_BLENDABLE)
     525                *pu32DevCap |= SVGA3D_DXFMT_BLENDABLE;
     526
     527            if (FormatSupport & D3D11_FORMAT_SUPPORT_MIP)
     528                *pu32DevCap |= SVGA3D_DXFMT_MIPS;
     529
     530            if (FormatSupport & D3D11_FORMAT_SUPPORT_TEXTURECUBE)
     531                *pu32DevCap |= SVGA3D_DXFMT_ARRAY;
     532
     533            if (FormatSupport & D3D11_FORMAT_SUPPORT_TEXTURE3D)
     534                *pu32DevCap |= SVGA3D_DXFMT_VOLUME;
     535
     536            if (FormatSupport & D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER)
     537                *pu32DevCap |= SVGA3D_DXFMT_DX_VERTEX_BUFFER;
     538
     539            UINT NumQualityLevels;
     540            hr = pDevice->CheckMultisampleQualityLevels(dxgiFormat, 2, &NumQualityLevels);
     541            if (SUCCEEDED(hr) && NumQualityLevels != 0)
     542                *pu32DevCap |= SVGADX_DXFMT_MULTISAMPLE_2;
     543
     544            hr = pDevice->CheckMultisampleQualityLevels(dxgiFormat, 4, &NumQualityLevels);
     545            if (SUCCEEDED(hr) && NumQualityLevels != 0)
     546                *pu32DevCap |= SVGADX_DXFMT_MULTISAMPLE_4;
     547
     548            hr = pDevice->CheckMultisampleQualityLevels(dxgiFormat, 8, &NumQualityLevels);
     549            if (SUCCEEDED(hr) && NumQualityLevels != 0)
     550                *pu32DevCap |= SVGADX_DXFMT_MULTISAMPLE_8;
     551        }
     552        else
     553            rc = VERR_NOT_SUPPORTED;
     554    }
     555    else
     556        rc = VERR_NOT_SUPPORTED;
     557    return rc;
    104558}
    105559
     
    6231077    td.MipLevels          = 1;
    6241078    td.ArraySize          = 1;
    625     td.Format             = DXGI_FORMAT_B8G8R8A8_UNORM;
     1079    td.Format             = vmsvgaDXScreenTargetFormat2Dxgi(pSurface->format); // DXGI_FORMAT_B8G8R8A8_UNORM;
    6261080    td.SampleDesc.Count   = 1;
    6271081    td.SampleDesc.Quality = 0;
     
    7941248
    7951249
    796 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val)
     1250int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val)
    7971251{
    7981252    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
     
    8001254
    8011255    int rc = VINF_SUCCESS;
     1256
     1257    *pu32Val = 0;
     1258
     1259    /* Most values are taken from:
     1260     * https://docs.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-devices-downlevel-intro
     1261     *
     1262     * Shader values are from
     1263     * https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-models
     1264     */
    8021265
    8031266    switch (idx3dCaps)
     
    8071270        break;
    8081271
     1272    case SVGA3D_DEVCAP_MAX_LIGHTS:
     1273        *pu32Val = SVGA3D_NUM_LIGHTS; /* VGPU9. Not applicable to DX11. */
     1274        break;
     1275
     1276    case SVGA3D_DEVCAP_MAX_TEXTURES:
     1277        *pu32Val = SVGA3D_NUM_TEXTURE_UNITS; /* VGPU9. Not applicable to DX11. */
     1278        break;
     1279
     1280    case SVGA3D_DEVCAP_MAX_CLIP_PLANES:
     1281        *pu32Val = SVGA3D_NUM_CLIPPLANES;
     1282        break;
     1283
     1284    case SVGA3D_DEVCAP_VERTEX_SHADER_VERSION:
     1285        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1286            *pu32Val = SVGA3DVSVERSION_40;
     1287        else
     1288            *pu32Val = SVGA3DVSVERSION_30;
     1289        break;
     1290
     1291    case SVGA3D_DEVCAP_VERTEX_SHADER:
     1292        *pu32Val = 1;
     1293        break;
     1294
     1295    case SVGA3D_DEVCAP_FRAGMENT_SHADER_VERSION:
     1296        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1297            *pu32Val = SVGA3DPSVERSION_40;
     1298        else
     1299            *pu32Val = SVGA3DPSVERSION_30;
     1300        break;
     1301
     1302    case SVGA3D_DEVCAP_FRAGMENT_SHADER:
     1303        *pu32Val = 1;
     1304        break;
     1305
     1306    case SVGA3D_DEVCAP_MAX_RENDER_TARGETS:
     1307        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1308            *pu32Val = 8;
     1309        else
     1310            *pu32Val = 4;
     1311        break;
     1312
     1313    case SVGA3D_DEVCAP_S23E8_TEXTURES:
     1314    case SVGA3D_DEVCAP_S10E5_TEXTURES:
     1315        /* Must be obsolete by now; surface format caps specify the same thing. */
     1316        break;
     1317
     1318    case SVGA3D_DEVCAP_MAX_FIXED_VERTEXBLEND:
     1319        /* Obsolete */
     1320        break;
     1321
     1322    /*
     1323     *   2. The BUFFER_FORMAT capabilities are deprecated, and they always
     1324     *      return TRUE. Even on physical hardware that does not support
     1325     *      these formats natively, the SVGA3D device will provide an emulation
     1326     *      which should be invisible to the guest OS.
     1327     */
     1328    case SVGA3D_DEVCAP_D16_BUFFER_FORMAT:
     1329    case SVGA3D_DEVCAP_D24S8_BUFFER_FORMAT:
     1330    case SVGA3D_DEVCAP_D24X8_BUFFER_FORMAT:
     1331        *pu32Val = 1;
     1332        break;
     1333
     1334    case SVGA3D_DEVCAP_QUERY_TYPES:
     1335        /* Obsolete */
     1336        break;
     1337
     1338    case SVGA3D_DEVCAP_TEXTURE_GRADIENT_SAMPLING:
     1339        /* Obsolete */
     1340        break;
     1341
     1342    case SVGA3D_DEVCAP_MAX_POINT_SIZE:
     1343        AssertCompile(sizeof(uint32_t) == sizeof(float));
     1344        *(float *)pu32Val = 256.0f;  /* VGPU9. Not applicable to DX11. */
     1345        break;
     1346
     1347    case SVGA3D_DEVCAP_MAX_SHADER_TEXTURES:
     1348        /* Obsolete */
     1349        break;
     1350
    8091351    case SVGA3D_DEVCAP_MAX_TEXTURE_WIDTH:
    810         *pu32Val = 8192;
    811         break;
    812 
    8131352    case SVGA3D_DEVCAP_MAX_TEXTURE_HEIGHT:
    814         *pu32Val = 8192;
     1353        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_11_0)
     1354            *pu32Val = 16384;
     1355        else if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1356            *pu32Val = 8192;
     1357        else if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_9_3)
     1358            *pu32Val = 4096;
     1359        else
     1360            *pu32Val = 2048;
     1361        break;
     1362
     1363    case SVGA3D_DEVCAP_MAX_VOLUME_EXTENT:
     1364        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1365            *pu32Val = 2048;
     1366        else
     1367            *pu32Val = 256;
     1368        break;
     1369
     1370    case SVGA3D_DEVCAP_MAX_TEXTURE_REPEAT:
     1371        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_11_0)
     1372            *pu32Val = 16384;
     1373        else if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_9_3)
     1374            *pu32Val = 8192;
     1375        else if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_9_2)
     1376            *pu32Val = 2048;
     1377        else
     1378            *pu32Val = 128;
     1379        break;
     1380
     1381    case SVGA3D_DEVCAP_MAX_TEXTURE_ASPECT_RATIO:
     1382        /* Obsolete */
     1383        break;
     1384
     1385    case SVGA3D_DEVCAP_MAX_TEXTURE_ANISOTROPY:
     1386        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_9_2)
     1387            *pu32Val = D3D11_REQ_MAXANISOTROPY;
     1388        else
     1389            *pu32Val = 2; // D3D_FL9_1_DEFAULT_MAX_ANISOTROPY;
     1390        break;
     1391
     1392    case SVGA3D_DEVCAP_MAX_PRIMITIVE_COUNT:
     1393        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1394            *pu32Val = UINT32_MAX;
     1395        else if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_9_2)
     1396            *pu32Val = 1048575; // D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT;
     1397        else
     1398            *pu32Val = 65535; // D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT;
     1399        break;
     1400
     1401    case SVGA3D_DEVCAP_MAX_VERTEX_INDEX:
     1402        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1403            *pu32Val = UINT32_MAX;
     1404        else if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_9_2)
     1405            *pu32Val = 1048575;
     1406        else
     1407            *pu32Val = 65534;
     1408        break;
     1409
     1410    case SVGA3D_DEVCAP_MAX_VERTEX_SHADER_INSTRUCTIONS:
     1411        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1412            *pu32Val = UINT32_MAX;
     1413        else
     1414            *pu32Val = 512;
     1415        break;
     1416
     1417    case SVGA3D_DEVCAP_MAX_FRAGMENT_SHADER_INSTRUCTIONS:
     1418        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1419            *pu32Val = UINT32_MAX;
     1420        else
     1421            *pu32Val = 512;
     1422        break;
     1423
     1424    case SVGA3D_DEVCAP_MAX_VERTEX_SHADER_TEMPS:
     1425        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1426            *pu32Val = 4096;
     1427        else
     1428            *pu32Val = 32;
     1429        break;
     1430
     1431    case SVGA3D_DEVCAP_MAX_FRAGMENT_SHADER_TEMPS:
     1432        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1433            *pu32Val = 4096;
     1434        else
     1435            *pu32Val = 32;
     1436        break;
     1437
     1438    case SVGA3D_DEVCAP_TEXTURE_OPS:
     1439        /* Obsolete */
     1440        break;
     1441
     1442    case SVGA3D_DEVCAP_SURFACEFMT_X8R8G8B8:
     1443    case SVGA3D_DEVCAP_SURFACEFMT_A8R8G8B8:
     1444    case SVGA3D_DEVCAP_SURFACEFMT_A2R10G10B10:
     1445    case SVGA3D_DEVCAP_SURFACEFMT_X1R5G5B5:
     1446    case SVGA3D_DEVCAP_SURFACEFMT_A1R5G5B5:
     1447    case SVGA3D_DEVCAP_SURFACEFMT_A4R4G4B4:
     1448    case SVGA3D_DEVCAP_SURFACEFMT_R5G6B5:
     1449    case SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE16:
     1450    case SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8_ALPHA8:
     1451    case SVGA3D_DEVCAP_SURFACEFMT_ALPHA8:
     1452    case SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8:
     1453    case SVGA3D_DEVCAP_SURFACEFMT_Z_D16:
     1454    case SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8:
     1455    case SVGA3D_DEVCAP_SURFACEFMT_Z_D24X8:
     1456    case SVGA3D_DEVCAP_SURFACEFMT_DXT1:
     1457    case SVGA3D_DEVCAP_SURFACEFMT_DXT2:
     1458    case SVGA3D_DEVCAP_SURFACEFMT_DXT3:
     1459    case SVGA3D_DEVCAP_SURFACEFMT_DXT4:
     1460    case SVGA3D_DEVCAP_SURFACEFMT_DXT5:
     1461    case SVGA3D_DEVCAP_SURFACEFMT_BUMPX8L8V8U8:
     1462    case SVGA3D_DEVCAP_SURFACEFMT_A2W10V10U10:
     1463    case SVGA3D_DEVCAP_SURFACEFMT_BUMPU8V8:
     1464    case SVGA3D_DEVCAP_SURFACEFMT_Q8W8V8U8:
     1465    case SVGA3D_DEVCAP_SURFACEFMT_CxV8U8:
     1466    case SVGA3D_DEVCAP_SURFACEFMT_R_S10E5:
     1467    case SVGA3D_DEVCAP_SURFACEFMT_R_S23E8:
     1468    case SVGA3D_DEVCAP_SURFACEFMT_RG_S10E5:
     1469    case SVGA3D_DEVCAP_SURFACEFMT_RG_S23E8:
     1470    case SVGA3D_DEVCAP_SURFACEFMT_ARGB_S10E5:
     1471    case SVGA3D_DEVCAP_SURFACEFMT_ARGB_S23E8:
     1472    case SVGA3D_DEVCAP_SURFACEFMT_V16U16:
     1473    case SVGA3D_DEVCAP_SURFACEFMT_G16R16:
     1474    case SVGA3D_DEVCAP_SURFACEFMT_A16B16G16R16:
     1475    case SVGA3D_DEVCAP_SURFACEFMT_UYVY:
     1476    case SVGA3D_DEVCAP_SURFACEFMT_YUY2:
     1477    case SVGA3D_DEVCAP_SURFACEFMT_NV12:
     1478    case SVGA3D_DEVCAP_SURFACEFMT_AYUV:
     1479    case SVGA3D_DEVCAP_SURFACEFMT_Z_DF16:
     1480    case SVGA3D_DEVCAP_SURFACEFMT_Z_DF24:
     1481    case SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT:
     1482    case SVGA3D_DEVCAP_SURFACEFMT_ATI1:
     1483    case SVGA3D_DEVCAP_SURFACEFMT_ATI2:
     1484    case SVGA3D_DEVCAP_SURFACEFMT_YV12:
     1485    {
     1486        SVGA3dSurfaceFormat const enmFormat = vmsvgaDXDevCapSurfaceFmt2Format(idx3dCaps);
     1487        rc = vmsvgaDXCheckFormatSupportPreDX(pState, enmFormat, pu32Val);
     1488        break;
     1489    }
     1490
     1491    case SVGA3D_DEVCAP_MISSING62:
     1492        /* Unused */
     1493        break;
     1494
     1495    case SVGA3D_DEVCAP_MAX_VERTEX_SHADER_TEXTURES:
     1496        /* Obsolete */
     1497        break;
     1498
     1499    case SVGA3D_DEVCAP_MAX_SIMULTANEOUS_RENDER_TARGETS:
     1500        if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_10_0)
     1501            *pu32Val = 8;
     1502        else if (pState->pBackend->FeatureLevel >= D3D_FEATURE_LEVEL_9_3)
     1503            *pu32Val = 4; // D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT
     1504        else
     1505            *pu32Val = 1; // D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT
     1506        break;
     1507
     1508    case SVGA3D_DEVCAP_MULTISAMPLE_NONMASKABLESAMPLES:
     1509    case SVGA3D_DEVCAP_MULTISAMPLE_MASKABLESAMPLES:
     1510        *pu32Val = (1 << (2-1)) | (1 << (4-1)) | (1 << (8-1)); /* 2x, 4x, 8x */
     1511        break;
     1512
     1513    case SVGA3D_DEVCAP_ALPHATOCOVERAGE:
     1514        /* Obsolete? */
     1515        break;
     1516
     1517    case SVGA3D_DEVCAP_SUPERSAMPLE:
     1518        /* Obsolete? */
     1519        break;
     1520
     1521    case SVGA3D_DEVCAP_AUTOGENMIPMAPS:
     1522        *pu32Val = 1;
     1523        break;
     1524
     1525    case SVGA3D_DEVCAP_MAX_CONTEXT_IDS:
     1526        *pu32Val = SVGA3D_MAX_CONTEXT_IDS;
     1527        break;
     1528
     1529    case SVGA3D_DEVCAP_MAX_SURFACE_IDS:
     1530        *pu32Val = SVGA3D_MAX_SURFACE_IDS;
     1531        break;
     1532
     1533    case SVGA3D_DEVCAP_DEAD1:
     1534        /* Obsolete */
     1535        break;
     1536
     1537    case SVGA3D_DEVCAP_VIDEO_DECODE:
     1538        /* Obsolete */
     1539        break;
     1540
     1541    case SVGA3D_DEVCAP_VIDEO_PROCESS:
     1542        /* Obsolete */
     1543        break;
     1544
     1545    case SVGA3D_DEVCAP_LINE_AA:
     1546        *pu32Val = 1;
     1547        break;
     1548
     1549    case SVGA3D_DEVCAP_LINE_STIPPLE:
     1550        *pu32Val = 0; /* DX11 does not seem to support this directly. */
     1551        break;
     1552
     1553    case SVGA3D_DEVCAP_MAX_LINE_WIDTH:
     1554        AssertCompile(sizeof(uint32_t) == sizeof(float));
     1555        *(float *)pu32Val = 1.0f;
     1556        break;
     1557
     1558    case SVGA3D_DEVCAP_MAX_AA_LINE_WIDTH:
     1559        AssertCompile(sizeof(uint32_t) == sizeof(float));
     1560        *(float *)pu32Val = 1.0f;
     1561        break;
     1562
     1563    case SVGA3D_DEVCAP_LOGICOPS:
     1564        /* Deprecated. */
     1565        AssertCompile(SVGA3D_DEVCAP_LOGICOPS == 92); /* Newer SVGA headers redefine this. */
     1566        *pu32Val = 0; /* Supported starting with Direct3D 11.1 */
     1567        break;
     1568
     1569    case SVGA3D_DEVCAP_TS_COLOR_KEY:
     1570        *pu32Val = 0; /* DX11 does not seem to support this directly. */
     1571        break;
     1572
     1573    case SVGA3D_DEVCAP_DEAD2:
    8151574        break;
    8161575
     
    8191578        break;
    8201579
    821     default:
    822         *pu32Val = 0;
     1580    case SVGA3D_DEVCAP_MAX_TEXTURE_ARRAY_SIZE:
     1581        *pu32Val = D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION;
     1582        break;
     1583
     1584    case SVGA3D_DEVCAP_DX_MAX_VERTEXBUFFERS:
     1585        *pu32Val = D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT;
     1586        break;
     1587
     1588    case SVGA3D_DEVCAP_DX_MAX_CONSTANT_BUFFERS:
     1589        *pu32Val = D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT;
     1590        break;
     1591
     1592    case SVGA3D_DEVCAP_DX_PROVOKING_VERTEX:
     1593        *pu32Val = 0; /* boolean */
     1594        break;
     1595
     1596    case SVGA3D_DEVCAP_DXFMT_X8R8G8B8:
     1597    case SVGA3D_DEVCAP_DXFMT_A8R8G8B8:
     1598    case SVGA3D_DEVCAP_DXFMT_R5G6B5:
     1599    case SVGA3D_DEVCAP_DXFMT_X1R5G5B5:
     1600    case SVGA3D_DEVCAP_DXFMT_A1R5G5B5:
     1601    case SVGA3D_DEVCAP_DXFMT_A4R4G4B4:
     1602    case SVGA3D_DEVCAP_DXFMT_Z_D32:
     1603    case SVGA3D_DEVCAP_DXFMT_Z_D16:
     1604    case SVGA3D_DEVCAP_DXFMT_Z_D24S8:
     1605    case SVGA3D_DEVCAP_DXFMT_Z_D15S1:
     1606    case SVGA3D_DEVCAP_DXFMT_LUMINANCE8:
     1607    case SVGA3D_DEVCAP_DXFMT_LUMINANCE4_ALPHA4:
     1608    case SVGA3D_DEVCAP_DXFMT_LUMINANCE16:
     1609    case SVGA3D_DEVCAP_DXFMT_LUMINANCE8_ALPHA8:
     1610    case SVGA3D_DEVCAP_DXFMT_DXT1:
     1611    case SVGA3D_DEVCAP_DXFMT_DXT2:
     1612    case SVGA3D_DEVCAP_DXFMT_DXT3:
     1613    case SVGA3D_DEVCAP_DXFMT_DXT4:
     1614    case SVGA3D_DEVCAP_DXFMT_DXT5:
     1615    case SVGA3D_DEVCAP_DXFMT_BUMPU8V8:
     1616    case SVGA3D_DEVCAP_DXFMT_BUMPL6V5U5:
     1617    case SVGA3D_DEVCAP_DXFMT_BUMPX8L8V8U8:
     1618    case SVGA3D_DEVCAP_DXFMT_FORMAT_DEAD1:
     1619    case SVGA3D_DEVCAP_DXFMT_ARGB_S10E5:
     1620    case SVGA3D_DEVCAP_DXFMT_ARGB_S23E8:
     1621    case SVGA3D_DEVCAP_DXFMT_A2R10G10B10:
     1622    case SVGA3D_DEVCAP_DXFMT_V8U8:
     1623    case SVGA3D_DEVCAP_DXFMT_Q8W8V8U8:
     1624    case SVGA3D_DEVCAP_DXFMT_CxV8U8:
     1625    case SVGA3D_DEVCAP_DXFMT_X8L8V8U8:
     1626    case SVGA3D_DEVCAP_DXFMT_A2W10V10U10:
     1627    case SVGA3D_DEVCAP_DXFMT_ALPHA8:
     1628    case SVGA3D_DEVCAP_DXFMT_R_S10E5:
     1629    case SVGA3D_DEVCAP_DXFMT_R_S23E8:
     1630    case SVGA3D_DEVCAP_DXFMT_RG_S10E5:
     1631    case SVGA3D_DEVCAP_DXFMT_RG_S23E8:
     1632    case SVGA3D_DEVCAP_DXFMT_BUFFER:
     1633    case SVGA3D_DEVCAP_DXFMT_Z_D24X8:
     1634    case SVGA3D_DEVCAP_DXFMT_V16U16:
     1635    case SVGA3D_DEVCAP_DXFMT_G16R16:
     1636    case SVGA3D_DEVCAP_DXFMT_A16B16G16R16:
     1637    case SVGA3D_DEVCAP_DXFMT_UYVY:
     1638    case SVGA3D_DEVCAP_DXFMT_YUY2:
     1639    case SVGA3D_DEVCAP_DXFMT_NV12:
     1640    case SVGA3D_DEVCAP_DXFMT_AYUV:
     1641    case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_TYPELESS:
     1642    case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_UINT:
     1643    case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_SINT:
     1644    case SVGA3D_DEVCAP_DXFMT_R32G32B32_TYPELESS:
     1645    case SVGA3D_DEVCAP_DXFMT_R32G32B32_FLOAT:
     1646    case SVGA3D_DEVCAP_DXFMT_R32G32B32_UINT:
     1647    case SVGA3D_DEVCAP_DXFMT_R32G32B32_SINT:
     1648    case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_TYPELESS:
     1649    case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UINT:
     1650    case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SNORM:
     1651    case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SINT:
     1652    case SVGA3D_DEVCAP_DXFMT_R32G32_TYPELESS:
     1653    case SVGA3D_DEVCAP_DXFMT_R32G32_UINT:
     1654    case SVGA3D_DEVCAP_DXFMT_R32G32_SINT:
     1655    case SVGA3D_DEVCAP_DXFMT_R32G8X24_TYPELESS:
     1656    case SVGA3D_DEVCAP_DXFMT_D32_FLOAT_S8X24_UINT:
     1657    case SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24_TYPELESS:
     1658    case SVGA3D_DEVCAP_DXFMT_X32_TYPELESS_G8X24_UINT:
     1659    case SVGA3D_DEVCAP_DXFMT_R10G10B10A2_TYPELESS:
     1660    case SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UINT:
     1661    case SVGA3D_DEVCAP_DXFMT_R11G11B10_FLOAT:
     1662    case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_TYPELESS:
     1663    case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM:
     1664    case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM_SRGB:
     1665    case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UINT:
     1666    case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SINT:
     1667    case SVGA3D_DEVCAP_DXFMT_R16G16_TYPELESS:
     1668    case SVGA3D_DEVCAP_DXFMT_R16G16_UINT:
     1669    case SVGA3D_DEVCAP_DXFMT_R16G16_SINT:
     1670    case SVGA3D_DEVCAP_DXFMT_R32_TYPELESS:
     1671    case SVGA3D_DEVCAP_DXFMT_D32_FLOAT:
     1672    case SVGA3D_DEVCAP_DXFMT_R32_UINT:
     1673    case SVGA3D_DEVCAP_DXFMT_R32_SINT:
     1674    case SVGA3D_DEVCAP_DXFMT_R24G8_TYPELESS:
     1675    case SVGA3D_DEVCAP_DXFMT_D24_UNORM_S8_UINT:
     1676    case SVGA3D_DEVCAP_DXFMT_R24_UNORM_X8_TYPELESS:
     1677    case SVGA3D_DEVCAP_DXFMT_X24_TYPELESS_G8_UINT:
     1678    case SVGA3D_DEVCAP_DXFMT_R8G8_TYPELESS:
     1679    case SVGA3D_DEVCAP_DXFMT_R8G8_UNORM:
     1680    case SVGA3D_DEVCAP_DXFMT_R8G8_UINT:
     1681    case SVGA3D_DEVCAP_DXFMT_R8G8_SINT:
     1682    case SVGA3D_DEVCAP_DXFMT_R16_TYPELESS:
     1683    case SVGA3D_DEVCAP_DXFMT_R16_UNORM:
     1684    case SVGA3D_DEVCAP_DXFMT_R16_UINT:
     1685    case SVGA3D_DEVCAP_DXFMT_R16_SNORM:
     1686    case SVGA3D_DEVCAP_DXFMT_R16_SINT:
     1687    case SVGA3D_DEVCAP_DXFMT_R8_TYPELESS:
     1688    case SVGA3D_DEVCAP_DXFMT_R8_UNORM:
     1689    case SVGA3D_DEVCAP_DXFMT_R8_UINT:
     1690    case SVGA3D_DEVCAP_DXFMT_R8_SNORM:
     1691    case SVGA3D_DEVCAP_DXFMT_R8_SINT:
     1692    case SVGA3D_DEVCAP_DXFMT_P8:
     1693    case SVGA3D_DEVCAP_DXFMT_R9G9B9E5_SHAREDEXP:
     1694    case SVGA3D_DEVCAP_DXFMT_R8G8_B8G8_UNORM:
     1695    case SVGA3D_DEVCAP_DXFMT_G8R8_G8B8_UNORM:
     1696    case SVGA3D_DEVCAP_DXFMT_BC1_TYPELESS:
     1697    case SVGA3D_DEVCAP_DXFMT_BC1_UNORM_SRGB:
     1698    case SVGA3D_DEVCAP_DXFMT_BC2_TYPELESS:
     1699    case SVGA3D_DEVCAP_DXFMT_BC2_UNORM_SRGB:
     1700    case SVGA3D_DEVCAP_DXFMT_BC3_TYPELESS:
     1701    case SVGA3D_DEVCAP_DXFMT_BC3_UNORM_SRGB:
     1702    case SVGA3D_DEVCAP_DXFMT_BC4_TYPELESS:
     1703    case SVGA3D_DEVCAP_DXFMT_ATI1:
     1704    case SVGA3D_DEVCAP_DXFMT_BC4_SNORM:
     1705    case SVGA3D_DEVCAP_DXFMT_BC5_TYPELESS:
     1706    case SVGA3D_DEVCAP_DXFMT_ATI2:
     1707    case SVGA3D_DEVCAP_DXFMT_BC5_SNORM:
     1708    case SVGA3D_DEVCAP_DXFMT_R10G10B10_XR_BIAS_A2_UNORM:
     1709    case SVGA3D_DEVCAP_DXFMT_B8G8R8A8_TYPELESS:
     1710    case SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM_SRGB:
     1711    case SVGA3D_DEVCAP_DXFMT_B8G8R8X8_TYPELESS:
     1712    case SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM_SRGB:
     1713    case SVGA3D_DEVCAP_DXFMT_Z_DF16:
     1714    case SVGA3D_DEVCAP_DXFMT_Z_DF24:
     1715    case SVGA3D_DEVCAP_DXFMT_Z_D24S8_INT:
     1716    case SVGA3D_DEVCAP_DXFMT_YV12:
     1717    case SVGA3D_DEVCAP_DXFMT_R32G32B32A32_FLOAT:
     1718    case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_FLOAT:
     1719    case SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UNORM:
     1720    case SVGA3D_DEVCAP_DXFMT_R32G32_FLOAT:
     1721    case SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UNORM:
     1722    case SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SNORM:
     1723    case SVGA3D_DEVCAP_DXFMT_R16G16_FLOAT:
     1724    case SVGA3D_DEVCAP_DXFMT_R16G16_UNORM:
     1725    case SVGA3D_DEVCAP_DXFMT_R16G16_SNORM:
     1726    case SVGA3D_DEVCAP_DXFMT_R32_FLOAT:
     1727    case SVGA3D_DEVCAP_DXFMT_R8G8_SNORM:
     1728    case SVGA3D_DEVCAP_DXFMT_R16_FLOAT:
     1729    case SVGA3D_DEVCAP_DXFMT_D16_UNORM:
     1730    case SVGA3D_DEVCAP_DXFMT_A8_UNORM:
     1731    case SVGA3D_DEVCAP_DXFMT_BC1_UNORM:
     1732    case SVGA3D_DEVCAP_DXFMT_BC2_UNORM:
     1733    case SVGA3D_DEVCAP_DXFMT_BC3_UNORM:
     1734    case SVGA3D_DEVCAP_DXFMT_B5G6R5_UNORM:
     1735    case SVGA3D_DEVCAP_DXFMT_B5G5R5A1_UNORM:
     1736    case SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM:
     1737    case SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM:
     1738    case SVGA3D_DEVCAP_DXFMT_BC4_UNORM:
     1739    case SVGA3D_DEVCAP_DXFMT_BC5_UNORM:
     1740    {
     1741        SVGA3dSurfaceFormat const enmFormat = vmsvgaDXDevCapDxfmt2Format(idx3dCaps);
     1742        rc = vmsvgaDXCheckFormatSupport(pState, enmFormat, pu32Val);
     1743        break;
     1744    }
     1745
     1746    case SVGA3D_DEVCAP_MAX:
     1747    case SVGA3D_DEVCAP_INVALID:
    8231748        rc = VERR_NOT_SUPPORTED;
     1749        break;
    8241750    }
    8251751
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp

    r86838 r86864  
    424424
    425425
    426 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val)
     426int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val)
    427427{
    428428    PVMSVGA3DSTATE pState = pThisCC->svga.p3dState;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h

    r86838 r86864  
    8383int vmsvga3dReset(PVGASTATECC pThisCC);
    8484void vmsvga3dUpdateHostScreenViewport(PVGASTATECC pThisCC, uint32_t idScreen, VMSVGAVIEWPORT const *pOldViewport);
    85 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, uint32_t idx3dCaps, uint32_t *pu32Val);
     85int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val);
    8686
    8787int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, SVGA3dSurfaceFlags surfaceFlags, SVGA3dSurfaceFormat format,
Note: See TracChangeset for help on using the changeset viewer.

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