MVKPixelFormats reduce some MTLPixelFormat capabilities for simulators.
Add MVK_IOS_SIMULATOR and MVK_TVOS_SIMULATOR macros. MVKPixelFormats add disableMTLPixelFormatCapabilities(). MVKPixelFormats add disableAllMTLPixelFormatCapabilities().
This commit is contained in:
parent
72517a2474
commit
7910f43867
@ -36,40 +36,50 @@ extern "C" {
|
||||
*/
|
||||
#ifndef MVK_DEBUG
|
||||
# ifdef DEBUG
|
||||
# define MVK_DEBUG 1
|
||||
# define MVK_DEBUG 1
|
||||
# else
|
||||
# define MVK_DEBUG 0
|
||||
# define MVK_DEBUG 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/** Building for macOS. */
|
||||
#ifndef MVK_MACOS
|
||||
# define MVK_MACOS TARGET_OS_OSX
|
||||
# define MVK_MACOS TARGET_OS_OSX
|
||||
#endif
|
||||
|
||||
/** Building for iOS. */
|
||||
#ifndef MVK_IOS
|
||||
# define MVK_IOS TARGET_OS_IOS
|
||||
# define MVK_IOS TARGET_OS_IOS
|
||||
#endif
|
||||
|
||||
/** Building for tvOS. */
|
||||
#ifndef MVK_TVOS
|
||||
# define MVK_TVOS TARGET_OS_TV
|
||||
# define MVK_TVOS TARGET_OS_TV
|
||||
#endif
|
||||
|
||||
/** Building for iOS or tvOS. */
|
||||
#ifndef MVK_IOS_OR_TVOS
|
||||
# define MVK_IOS_OR_TVOS (MVK_IOS || MVK_TVOS)
|
||||
# define MVK_IOS_OR_TVOS (MVK_IOS || MVK_TVOS)
|
||||
#endif
|
||||
|
||||
/** Building for iOS or tvOS. */
|
||||
#ifndef MVK_MACOS_OR_IOS
|
||||
# define MVK_MACOS_OR_IOS (MVK_MACOS || MVK_IOS)
|
||||
# define MVK_MACOS_OR_IOS (MVK_MACOS || MVK_IOS)
|
||||
#endif
|
||||
|
||||
/** Building for iOS or tvOS Simulator. */
|
||||
/** Building for a Simulator. */
|
||||
#ifndef MVK_OS_SIMULATOR
|
||||
# define MVK_OS_SIMULATOR TARGET_OS_SIMULATOR
|
||||
# define MVK_OS_SIMULATOR TARGET_OS_SIMULATOR
|
||||
#endif
|
||||
|
||||
/** Building for iOS Simulator. */
|
||||
#ifndef MVK_IOS_SIMULATOR
|
||||
# define MVK_IOS_SIMULATOR (MVK_IOS && MVK_OS_SIMULATOR)
|
||||
#endif
|
||||
|
||||
/** Building for tvOS Simulator. */
|
||||
#ifndef MVK_TVOS_SIMULATOR
|
||||
# define MVK_TVOS_SIMULATOR (MVK_TVOS && MVK_OS_SIMULATOR)
|
||||
#endif
|
||||
|
||||
/** Directive to identify public symbols. */
|
||||
|
@ -317,6 +317,9 @@ protected:
|
||||
MTLFeatureSet mtlFeatSet,
|
||||
MTLPixelFormat mtlPixFmt,
|
||||
MVKMTLFmtCaps mtlFmtCaps);
|
||||
void disableMTLPixelFormatCapabilities(MTLPixelFormat mtlPixFmt,
|
||||
MVKMTLFmtCaps mtlFmtCaps);
|
||||
void disableAllMTLPixelFormatCapabilities(MTLPixelFormat mtlPixFmt);
|
||||
void addMTLVertexFormatCapabilities(id<MTLDevice> mtlDevice,
|
||||
MTLFeatureSet mtlFeatSet,
|
||||
MTLVertexFormat mtlVtxFmt,
|
||||
|
@ -995,6 +995,13 @@ void MVKPixelFormats::initMTLPixelFormatCapabilities() {
|
||||
addMTLPixelFormatDesc( GBGR422, RF, RF );
|
||||
addMTLPixelFormatDesc( BGRG422, RF, RF );
|
||||
|
||||
// Extended range and wide color pixel formats
|
||||
addMTLPixelFormatDesc( BGRA10_XR, None, None );
|
||||
addMTLPixelFormatDesc( BGRA10_XR_sRGB, None, None );
|
||||
addMTLPixelFormatDesc( BGR10_XR, None, None );
|
||||
addMTLPixelFormatDesc( BGR10_XR_sRGB, None, None );
|
||||
addMTLPixelFormatDesc( BGR10A2Unorm, None, None );
|
||||
|
||||
// Depth and stencil pixel formats
|
||||
addMTLPixelFormatDesc( Depth16Unorm, None, None );
|
||||
addMTLPixelFormatDesc( Depth32Float, DRM, DRFMR );
|
||||
@ -1004,13 +1011,6 @@ void MVKPixelFormats::initMTLPixelFormatCapabilities() {
|
||||
addMTLPixelFormatDesc( X24_Stencil8, None, DRM );
|
||||
addMTLPixelFormatDesc( X32_Stencil8, DRM, DRM );
|
||||
|
||||
// Extended range and wide color pixel formats
|
||||
addMTLPixelFormatDesc( BGRA10_XR, None, None );
|
||||
addMTLPixelFormatDesc( BGRA10_XR_sRGB, None, None );
|
||||
addMTLPixelFormatDesc( BGR10_XR, None, None );
|
||||
addMTLPixelFormatDesc( BGR10_XR_sRGB, None, None );
|
||||
addMTLPixelFormatDesc( BGR10A2Unorm, None, None );
|
||||
|
||||
// When adding to this list, be sure to ensure _mtlPixelFormatCount is large enough for the format count
|
||||
}
|
||||
|
||||
@ -1137,6 +1137,16 @@ void MVKPixelFormats::addMTLPixelFormatCapabilities(id<MTLDevice> mtlDevice,
|
||||
}
|
||||
}
|
||||
|
||||
// Disable capability flags in the Metal pixel format.
|
||||
void MVKPixelFormats::disableMTLPixelFormatCapabilities(MTLPixelFormat mtlPixFmt,
|
||||
MVKMTLFmtCaps mtlFmtCaps) {
|
||||
mvkDisableFlags(getMTLPixelFormatDesc(mtlPixFmt).mtlFmtCaps, mtlFmtCaps);
|
||||
}
|
||||
|
||||
void MVKPixelFormats::disableAllMTLPixelFormatCapabilities(MTLPixelFormat mtlPixFmt) {
|
||||
getMTLPixelFormatDesc(mtlPixFmt).mtlFmtCaps = kMVKMTLFmtCapsNone;
|
||||
}
|
||||
|
||||
// If the device supports the feature set, add additional capabilities to a MTLVertexFormat
|
||||
void MVKPixelFormats::addMTLVertexFormatCapabilities(id<MTLDevice> mtlDevice,
|
||||
MTLFeatureSet mtlFeatSet,
|
||||
@ -1162,6 +1172,12 @@ void MVKPixelFormats::modifyMTLFormatCapabilities() {
|
||||
#define addMTLPixelFormatCapabilities(FEAT_SET, MTL_FMT, CAPS) \
|
||||
addMTLPixelFormatCapabilities(mtlDevice, MTLFeatureSet_ ##FEAT_SET, MTLPixelFormat ##MTL_FMT, kMVKMTLFmtCaps ##CAPS)
|
||||
|
||||
#define disableAllMTLPixelFormatCapabilities(MTL_FMT) \
|
||||
disableAllMTLPixelFormatCapabilities(MTLPixelFormat ##MTL_FMT)
|
||||
|
||||
#define disableMTLPixelFormatCapabilities(MTL_FMT, CAPS) \
|
||||
disableMTLPixelFormatCapabilities(MTLPixelFormat ##MTL_FMT, kMVKMTLFmtCaps ##CAPS)
|
||||
|
||||
#define addMTLVertexFormatCapabilities(FEAT_SET, MTL_FMT, CAPS) \
|
||||
addMTLVertexFormatCapabilities(mtlDevice, MTLFeatureSet_ ##FEAT_SET, MTLVertexFormat ##MTL_FMT, kMVKMTLFmtCaps ##CAPS)
|
||||
|
||||
@ -1192,6 +1208,7 @@ void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
|
||||
addMTLVertexFormatCapabilities( macOS_GPUFamily1_v3, UChar4Normalized_BGRA, Vertex );
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MVK_TVOS
|
||||
void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
|
||||
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v2, R8Unorm_sRGB, All );
|
||||
@ -1281,8 +1298,53 @@ void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
|
||||
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, Short, Vertex );
|
||||
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, Half, Vertex );
|
||||
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, UChar4Normalized_BGRA, Vertex );
|
||||
|
||||
// Disable for simulator last.
|
||||
#if MVK_TVOS_SIMULATOR
|
||||
disableAllMTLPixelFormatCapabilities(R8Unorm_sRGB);
|
||||
disableAllMTLPixelFormatCapabilities(RG8Unorm_sRGB);
|
||||
disableAllMTLPixelFormatCapabilities(B5G6R5Unorm);
|
||||
disableAllMTLPixelFormatCapabilities(A1BGR5Unorm);
|
||||
disableAllMTLPixelFormatCapabilities(ABGR4Unorm);
|
||||
disableAllMTLPixelFormatCapabilities(BGR5A1Unorm);
|
||||
|
||||
disableAllMTLPixelFormatCapabilities(BGRA10_XR);
|
||||
disableAllMTLPixelFormatCapabilities(BGRA10_XR_sRGB);
|
||||
disableAllMTLPixelFormatCapabilities(BGR10_XR);
|
||||
disableAllMTLPixelFormatCapabilities(BGR10_XR_sRGB);
|
||||
|
||||
disableAllMTLPixelFormatCapabilities(GBGR422);
|
||||
disableAllMTLPixelFormatCapabilities(BGRG422);
|
||||
|
||||
disableMTLPixelFormatCapabilities(RGB9E5Float, ColorAtt);
|
||||
|
||||
disableMTLPixelFormatCapabilities(R8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(RG8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(RGBA8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(BGRA8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(PVRTC_RGBA_2BPP_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(PVRTC_RGBA_4BPP_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ETC2_RGB8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ETC2_RGB8A1_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(EAC_RGBA8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_4x4_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_5x4_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_5x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_6x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_6x6_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_8x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_8x6_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_8x8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x6_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x10_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_12x10_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_12x12_sRGB, Write);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MVK_IOS
|
||||
void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
|
||||
addMTLPixelFormatCapabilities( iOS_GPUFamily2_v3, R8Unorm_sRGB, All );
|
||||
@ -1372,9 +1434,56 @@ void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
|
||||
addMTLVertexFormatCapabilities( iOS_GPUFamily1_v4, Short, Vertex );
|
||||
addMTLVertexFormatCapabilities( iOS_GPUFamily1_v4, Half, Vertex );
|
||||
addMTLVertexFormatCapabilities( iOS_GPUFamily1_v4, UChar4Normalized_BGRA, Vertex );
|
||||
|
||||
// Disable for simulator last.
|
||||
#if MVK_IOS_SIMULATOR
|
||||
disableAllMTLPixelFormatCapabilities(R8Unorm_sRGB);
|
||||
disableAllMTLPixelFormatCapabilities(RG8Unorm_sRGB);
|
||||
disableAllMTLPixelFormatCapabilities(B5G6R5Unorm);
|
||||
disableAllMTLPixelFormatCapabilities(A1BGR5Unorm);
|
||||
disableAllMTLPixelFormatCapabilities(ABGR4Unorm);
|
||||
disableAllMTLPixelFormatCapabilities(BGR5A1Unorm);
|
||||
|
||||
disableAllMTLPixelFormatCapabilities(BGRA10_XR);
|
||||
disableAllMTLPixelFormatCapabilities(BGRA10_XR_sRGB);
|
||||
disableAllMTLPixelFormatCapabilities(BGR10_XR);
|
||||
disableAllMTLPixelFormatCapabilities(BGR10_XR_sRGB);
|
||||
|
||||
disableAllMTLPixelFormatCapabilities(GBGR422);
|
||||
disableAllMTLPixelFormatCapabilities(BGRG422);
|
||||
|
||||
disableMTLPixelFormatCapabilities(RGB9E5Float, ColorAtt);
|
||||
|
||||
disableMTLPixelFormatCapabilities(R8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(RG8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(RGBA8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(BGRA8Unorm_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(PVRTC_RGBA_2BPP_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(PVRTC_RGBA_4BPP_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ETC2_RGB8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ETC2_RGB8A1_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(EAC_RGBA8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_4x4_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_5x4_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_5x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_6x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_6x6_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_8x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_8x6_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_8x8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x5_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x6_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x8_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_10x10_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_12x10_sRGB, Write);
|
||||
disableMTLPixelFormatCapabilities(ASTC_12x12_sRGB, Write);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#undef addMTLPixelFormatCapabilities
|
||||
#undef disableMTLPixelFormatCapabilities
|
||||
#undef disableAllMTLPixelFormatCapabilities
|
||||
#undef addMTLVertexFormatCapabilities
|
||||
|
||||
// Populates the VkFormat lookup maps and connects Vulkan and Metal pixel formats to one-another.
|
||||
|
Loading…
x
Reference in New Issue
Block a user