mirror of
https://github.com/shadps4-emu/ext-MoltenVK.git
synced 2026-01-31 01:05:17 +01:00
Miscellaneous build and documentation updates.
- Disable Mac Catalyst builds from all and all-debug in Makefile, due to unresolved issues with Mac Catalyst builds. - Disable numerous deprecation warnings in visionos builds. - Remove references to deprecated MTLFeatureSet. - Remove MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS from MoltenVK_Configuration_Parameters.md document. - Update Whats_New.md document.
This commit is contained in:
@@ -491,21 +491,6 @@ as having specialized graphics *or* compute *or* transfer functionality, to make
|
|||||||
apps to select a queue family with the appropriate requirements.
|
apps to select a queue family with the appropriate requirements.
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------
|
|
||||||
#### MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS
|
|
||||||
|
|
||||||
##### Type: Boolean
|
|
||||||
##### Default: `1`
|
|
||||||
|
|
||||||
Depending on the GPU, _Metal_ allows 8,192 or 32,768 occlusion queries per `MTLBuffer`.
|
|
||||||
If enabled, **MoltenVK** allocates a `MTLBuffer` for each query pool, allowing each query
|
|
||||||
pool to support that permitted number of queries. This may slow performance or cause
|
|
||||||
unexpected behaviour if the query pool is not established prior to a _Metal_ renderpass,
|
|
||||||
or if the query pool is changed within a renderpass. If disabled, one `MTLBuffer` will
|
|
||||||
be shared by all query pools, which improves performance, but limits the total device
|
|
||||||
queries to the permitted number.
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
#### MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST
|
#### MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST
|
||||||
|
|
||||||
|
|||||||
@@ -18,13 +18,31 @@ MoltenVK 1.4.1
|
|||||||
|
|
||||||
Released TBD
|
Released TBD
|
||||||
|
|
||||||
- .
|
- Improved occlusion query support:
|
||||||
- New state tracker implementation.
|
- Add support for occlusion queries across multiple renderpasses.
|
||||||
- New descriptor set/pool implementation.
|
- Improve performance by accumulating occlusion quieries in parallel,
|
||||||
- The new implementation is less forgiving of applications that don't properly manage the lifetime of their descriptors
|
and using untracked buffers to avoid encoder serialization.
|
||||||
(and bind them after the objects they point to have been destroyed).
|
- New descriptor state tracker implementation to improve performance.
|
||||||
Use `MVK_CONFIG_LIVE_CHECK_ALL_RESOURCES=1` to revert any crashes this might cause, or mark potentially-destroyed descriptors
|
- New descriptor set/pool implementation:
|
||||||
with `VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT`.
|
- The new implementation is less forgiving of applications that don't properly manage the lifetime
|
||||||
|
of their descriptors (and bind them after the objects they point to have been destroyed).
|
||||||
|
Use `MVK_CONFIG_LIVE_CHECK_ALL_RESOURCES=1` to revert any crashes this might cause,
|
||||||
|
or mark potentially-destroyed descriptors with `VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT`.
|
||||||
|
- Added working demo target for VisionOS in Cube Demo.
|
||||||
|
- Raise minimum target to _macOS 11.0 / iOS 14.0 / tvOS 14.0_
|
||||||
|
- Add support for `VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT`.
|
||||||
|
- Reject image usages whose format features are not supported.
|
||||||
|
- Return `VK_ERROR_OUT_OF_POOL_MEMORY` when running out of descriptor sets.
|
||||||
|
- Make vkGetPhysicalDeviceToolProperties() an instance function.
|
||||||
|
- Enable sample LOD bias for Xcode 26.
|
||||||
|
- Fix VkExternalMemory*CreateInfo not allowing host memory handle types.
|
||||||
|
- Fix improper boundary error when requesting exactly the number of variable descriptors allocated.
|
||||||
|
- Fix regression on functions used by multiple extensions.
|
||||||
|
- Fix improper use of dynamic depth/stencil attachment.
|
||||||
|
- Fix out-of-bound access when using multiview with multiple subpasses.
|
||||||
|
- Deprecate configuration parameter `MVKConfiguration::supportLargeQueryPools` and corresponding environment variable
|
||||||
|
`MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS`, as obsolete and ignored. Large query pools are now supported always.
|
||||||
|
- Disable Mac Catalyst builds from `all` and `all-debug` in `Makefile`, due to unresolved issues with Mac Catalyst builds.
|
||||||
- Update to latest SPIRV-Cross:
|
- Update to latest SPIRV-Cross:
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
5
Makefile
5
Makefile
@@ -21,12 +21,13 @@ MAKEARGS := $(strip \
|
|||||||
$(v)=$(value $(v)) ,)))
|
$(v)=$(value $(v)) ,)))
|
||||||
|
|
||||||
# Specify individually (not as dependencies) so the sub-targets don't run in parallel
|
# Specify individually (not as dependencies) so the sub-targets don't run in parallel
|
||||||
|
# maccat is currently excluded from `all` because of unresolved build issues on Mac Catalyst platform.
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all:
|
all:
|
||||||
@$(MAKE) macos
|
@$(MAKE) macos
|
||||||
@$(MAKE) ios
|
@$(MAKE) ios
|
||||||
@$(MAKE) iossim
|
@$(MAKE) iossim
|
||||||
@$(MAKE) maccat
|
# @$(MAKE) maccat
|
||||||
@$(MAKE) tvos
|
@$(MAKE) tvos
|
||||||
@$(MAKE) tvossim
|
@$(MAKE) tvossim
|
||||||
@$(MAKE) visionos # Requires Xcode 15+
|
@$(MAKE) visionos # Requires Xcode 15+
|
||||||
@@ -37,7 +38,7 @@ all-debug:
|
|||||||
@$(MAKE) macos-debug
|
@$(MAKE) macos-debug
|
||||||
@$(MAKE) ios-debug
|
@$(MAKE) ios-debug
|
||||||
@$(MAKE) iossim-debug
|
@$(MAKE) iossim-debug
|
||||||
@$(MAKE) maccat-debug
|
# @$(MAKE) maccat-debug
|
||||||
@$(MAKE) tvos-debug
|
@$(MAKE) tvos-debug
|
||||||
@$(MAKE) tvossim-debug
|
@$(MAKE) tvossim-debug
|
||||||
@$(MAKE) visionos-debug # Requires Xcode 15+
|
@$(MAKE) visionos-debug # Requires Xcode 15+
|
||||||
|
|||||||
@@ -2591,6 +2591,10 @@
|
|||||||
"-w",
|
"-w",
|
||||||
);
|
);
|
||||||
SDKROOT = xros;
|
SDKROOT = xros;
|
||||||
|
WARNING_CFLAGS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"-Wno-deprecated-declarations",
|
||||||
|
);
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@@ -2604,6 +2608,10 @@
|
|||||||
"-w",
|
"-w",
|
||||||
);
|
);
|
||||||
SDKROOT = xros;
|
SDKROOT = xros;
|
||||||
|
WARNING_CFLAGS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"-Wno-deprecated-declarations",
|
||||||
|
);
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
@@ -2792,6 +2800,10 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
SDKROOT = xros;
|
SDKROOT = xros;
|
||||||
|
WARNING_CFLAGS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"-Wno-deprecated-declarations",
|
||||||
|
);
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@@ -2799,6 +2811,10 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
SDKROOT = xros;
|
SDKROOT = xros;
|
||||||
|
WARNING_CFLAGS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"-Wno-deprecated-declarations",
|
||||||
|
);
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ typedef struct {
|
|||||||
VkBool32 synchronousQueueSubmits; /**< MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS */
|
VkBool32 synchronousQueueSubmits; /**< MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS */
|
||||||
MVKPrefillMetalCommandBuffersStyle prefillMetalCommandBuffers; /**< MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS */
|
MVKPrefillMetalCommandBuffersStyle prefillMetalCommandBuffers; /**< MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS */
|
||||||
uint32_t maxActiveMetalCommandBuffersPerQueue; /**< MVK_CONFIG_MAX_ACTIVE_METAL_COMMAND_BUFFERS_PER_QUEUE */
|
uint32_t maxActiveMetalCommandBuffersPerQueue; /**< MVK_CONFIG_MAX_ACTIVE_METAL_COMMAND_BUFFERS_PER_QUEUE */
|
||||||
VkBool32 supportLargeQueryPools; /**< MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS */
|
VkBool32 supportLargeQueryPools; /**< Obsolete, deprecated, and ignored. */
|
||||||
VkBool32 presentWithCommandBuffer; /**< Obsolete, deprecated, and ignored. */
|
VkBool32 presentWithCommandBuffer; /**< Obsolete, deprecated, and ignored. */
|
||||||
VkBool32 swapchainMinMagFilterUseNearest; /**< MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST */
|
VkBool32 swapchainMinMagFilterUseNearest; /**< MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST */
|
||||||
uint64_t metalCompileTimeout; /**< MVK_CONFIG_METAL_COMPILE_TIMEOUT */
|
uint64_t metalCompileTimeout; /**< MVK_CONFIG_METAL_COMPILE_TIMEOUT */
|
||||||
|
|||||||
@@ -457,7 +457,6 @@ protected:
|
|||||||
friend class MVKDeviceTrackingMixin;
|
friend class MVKDeviceTrackingMixin;
|
||||||
|
|
||||||
void propagateDebugName() override {}
|
void propagateDebugName() override {}
|
||||||
MTLFeatureSet getMaximalMTLFeatureSet();
|
|
||||||
void initMetalFeatures();
|
void initMetalFeatures();
|
||||||
void initFeatures();
|
void initFeatures();
|
||||||
void initMTLDevice();
|
void initMTLDevice();
|
||||||
|
|||||||
@@ -73,18 +73,6 @@ static const uint32_t kMaxTimeDomains = 2;
|
|||||||
|
|
||||||
#define supportsGPUFam(gpuFam, mtlDev) ([mtlDev respondsToSelector: @selector(supportsFamily:)] && [mtlDev supportsFamily: MTLGPUFamily ##gpuFam])
|
#define supportsGPUFam(gpuFam, mtlDev) ([mtlDev respondsToSelector: @selector(supportsFamily:)] && [mtlDev supportsFamily: MTLGPUFamily ##gpuFam])
|
||||||
|
|
||||||
#if MVK_IOS
|
|
||||||
#define supportsIOSGPU(gpuIdx, mtlDev) [mtlDev supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily ##gpuIdx ##_v1]
|
|
||||||
#else
|
|
||||||
#define supportsIOSGPU(gpuIdx, mtlDev) false
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if MVK_TVOS
|
|
||||||
#define supportsTVOSGPU(gpuIdx, mtlDev) [mtlDev supportsFeatureSet: MTLFeatureSet_tvOS_GPUFamily ##gpuIdx ##_v1]
|
|
||||||
#else
|
|
||||||
#define supportsTVOSGPU(gpuIdx, mtlDev) false
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define returnGPUValIf(gpuType, gpuIdx) if (supports ##gpuType ##gpuIdx) { return gpuIdx; }
|
#define returnGPUValIf(gpuType, gpuIdx) if (supports ##gpuType ##gpuIdx) { return gpuIdx; }
|
||||||
|
|
||||||
uint8_t MVKMTLDeviceCapabilities::getHighestAppleGPU() const {
|
uint8_t MVKMTLDeviceCapabilities::getHighestAppleGPU() const {
|
||||||
@@ -108,11 +96,11 @@ uint8_t MVKMTLDeviceCapabilities::getHighestMacGPU() const {
|
|||||||
|
|
||||||
MVKMTLDeviceCapabilities::MVKMTLDeviceCapabilities(id<MTLDevice> mtlDev) {
|
MVKMTLDeviceCapabilities::MVKMTLDeviceCapabilities(id<MTLDevice> mtlDev) {
|
||||||
mvkClear(this);
|
mvkClear(this);
|
||||||
supportsApple1 = supportsGPUFam(Apple1, mtlDev) || supportsIOSGPU(1, mtlDev) || supportsTVOSGPU(1, mtlDev);
|
supportsApple1 = supportsGPUFam(Apple1, mtlDev);
|
||||||
supportsApple2 = supportsGPUFam(Apple2, mtlDev) || supportsIOSGPU(2, mtlDev) || supportsTVOSGPU(1, mtlDev);
|
supportsApple2 = supportsGPUFam(Apple2, mtlDev);
|
||||||
supportsApple3 = supportsGPUFam(Apple3, mtlDev) || supportsIOSGPU(3, mtlDev) || supportsTVOSGPU(2, mtlDev);
|
supportsApple3 = supportsGPUFam(Apple3, mtlDev);
|
||||||
supportsApple4 = supportsGPUFam(Apple4, mtlDev) || supportsIOSGPU(4, mtlDev);
|
supportsApple4 = supportsGPUFam(Apple4, mtlDev);
|
||||||
supportsApple5 = supportsGPUFam(Apple5, mtlDev) || supportsIOSGPU(5, mtlDev);
|
supportsApple5 = supportsGPUFam(Apple5, mtlDev);
|
||||||
supportsApple6 = supportsGPUFam(Apple6, mtlDev);
|
supportsApple6 = supportsGPUFam(Apple6, mtlDev);
|
||||||
#if MVK_XCODE_13
|
#if MVK_XCODE_13
|
||||||
supportsApple7 = supportsGPUFam(Apple7, mtlDev);
|
supportsApple7 = supportsGPUFam(Apple7, mtlDev);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ graphics and compute functionality, that is built on Apple's [*Metal*](https://d
|
|||||||
graphics and compute framework on *macOS*, *iOS*, *tvOS*, and *visionOS*. **MoltenVK** allows
|
graphics and compute framework on *macOS*, *iOS*, *tvOS*, and *visionOS*. **MoltenVK** allows
|
||||||
you to use *Vulkan* graphics and compute functionality to develop modern, cross-platform,
|
you to use *Vulkan* graphics and compute functionality to develop modern, cross-platform,
|
||||||
high-performance graphical games and applications, and to run them across many platforms,
|
high-performance graphical games and applications, and to run them across many platforms,
|
||||||
including *macOS*, *iOS*, *tvOS*, *visionOS*, *Simulators*, and *Mac Catalyst* on *macOS 11.0+*,
|
including *macOS*, *iOS*, *tvOS*, *visionOS*, *Simulators*, and *Mac Catalyst*,
|
||||||
and all *Apple* architectures, including *Apple Silicon*.
|
and all *Apple* architectures, including *Apple Silicon*.
|
||||||
|
|
||||||
*Metal* uses a different shading language, the *Metal Shading Language (MSL)*, than
|
*Metal* uses a different shading language, the *Metal Shading Language (MSL)*, than
|
||||||
|
|||||||
Reference in New Issue
Block a user