mirror of
https://github.com/ZDoom/zdoom-macos-deps.git
synced 2024-12-03 17:02:02 +00:00
wip
[skip ci]
This commit is contained in:
commit
bfea777b0f
9 changed files with 167 additions and 74 deletions
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
|
@ -14,7 +14,7 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
target:
|
target:
|
||||||
- PrBoom-Plus
|
- glib
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -23,6 +23,10 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
./build.py --target ${{ matrix.target }}
|
./build.py --target ${{ matrix.target }}
|
||||||
|
|
||||||
|
# - name: Generate Xcode project
|
||||||
|
# run: |
|
||||||
|
# ./build.py --target ${{ matrix.target }} --xcode
|
||||||
|
|
||||||
- name: List Build Directory
|
- name: List Build Directory
|
||||||
if: always()
|
if: always()
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
|
@ -514,10 +514,72 @@ class SingleExeCTarget(MakeTarget):
|
||||||
class MesonTarget(BuildTarget):
|
class MesonTarget(BuildTarget):
|
||||||
def __init__(self, name=None):
|
def __init__(self, name=None):
|
||||||
super().__init__(name)
|
super().__init__(name)
|
||||||
|
self.configure_prefix = True
|
||||||
|
|
||||||
def configure(self, state: BuildState):
|
def configure(self, state: BuildState):
|
||||||
super().configure(state)
|
super().configure(state)
|
||||||
|
|
||||||
|
args = [
|
||||||
|
'setup',
|
||||||
|
'--buildtype=release',
|
||||||
|
'--default-library=static',
|
||||||
|
]
|
||||||
|
|
||||||
|
if self.configure_prefix:
|
||||||
|
args.append(f'--prefix={state.install_path}')
|
||||||
|
|
||||||
|
if state.xcode:
|
||||||
|
args.append(f'--backend=xcode')
|
||||||
|
else:
|
||||||
|
cross_file_path = state.build_path / (state.architecture() + '.txt')
|
||||||
|
self._write_cross_file(cross_file_path, state)
|
||||||
|
args.append(f'--cross-file={cross_file_path}')
|
||||||
|
|
||||||
|
args.append(state.build_path)
|
||||||
|
args.append(state.source)
|
||||||
|
|
||||||
|
# subprocess.run(args, check=True, cwd=state.build_path, env=state.environment)
|
||||||
|
self._run_meson(args, state)
|
||||||
|
|
||||||
|
def build(self, state: BuildState):
|
||||||
|
if state.xcode:
|
||||||
|
args = ('open', f'{self.name}.xcodeproj')
|
||||||
|
subprocess.run(args, check=True, cwd=state.build_path, env=state.environment)
|
||||||
|
|
||||||
|
# args = ['ninja']
|
||||||
|
#
|
||||||
|
# if state.verbose:
|
||||||
|
# args.append('--verbose')
|
||||||
|
#
|
||||||
|
# subprocess.run(args, check=True, cwd=state.build_path, env=state.environment)
|
||||||
|
|
||||||
|
args = [
|
||||||
|
'compile',
|
||||||
|
f'-C={state.build_path}',
|
||||||
|
]
|
||||||
|
|
||||||
|
if state.verbose:
|
||||||
|
args.append('--verbose')
|
||||||
|
|
||||||
|
self._run_meson(args, state)
|
||||||
|
|
||||||
|
def post_build(self, state: BuildState):
|
||||||
|
if state.xcode:
|
||||||
|
return
|
||||||
|
|
||||||
|
# self.install(state, tool='ninja')
|
||||||
|
args = [
|
||||||
|
'install',
|
||||||
|
f'-C={state.build_path}'
|
||||||
|
]
|
||||||
|
|
||||||
|
if not self.configure_prefix:
|
||||||
|
args.append(f'--destdir={state.install_path}')
|
||||||
|
|
||||||
|
self._run_meson(args, state)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _write_cross_file(path: Path, state: BuildState):
|
||||||
c_compiler = state.c_compiler()
|
c_compiler = state.c_compiler()
|
||||||
assert c_compiler
|
assert c_compiler
|
||||||
|
|
||||||
|
@ -527,8 +589,7 @@ class MesonTarget(BuildTarget):
|
||||||
cpu = state.architecture()
|
cpu = state.architecture()
|
||||||
cpu_family = 'arm' if 'arm64' == cpu else cpu
|
cpu_family = 'arm' if 'arm64' == cpu else cpu
|
||||||
|
|
||||||
cross_file = state.build_path / (state.architecture() + '.txt')
|
with open(path, 'w') as f:
|
||||||
with open(cross_file, 'w') as f:
|
|
||||||
f.write(f'''
|
f.write(f'''
|
||||||
[binaries]
|
[binaries]
|
||||||
c = '{c_compiler}'
|
c = '{c_compiler}'
|
||||||
|
@ -545,23 +606,9 @@ cpu = '{cpu}'
|
||||||
endian = 'little'
|
endian = 'little'
|
||||||
''')
|
''')
|
||||||
|
|
||||||
args = (
|
@staticmethod
|
||||||
state.bin_path / 'meson',
|
def _run_meson(_args: typing.Sequence[typing.Union[str, Path]], state: BuildState):
|
||||||
f'--prefix={state.install_path}',
|
args = [state.bin_path / 'meson']
|
||||||
'--buildtype=release',
|
args.extend(_args)
|
||||||
'--default-library=static',
|
|
||||||
f'--cross-file={cross_file}',
|
|
||||||
state.source
|
|
||||||
)
|
|
||||||
subprocess.run(args, check=True, cwd=state.build_path, env=state.environment)
|
|
||||||
|
|
||||||
def build(self, state: BuildState):
|
|
||||||
args = ['ninja']
|
|
||||||
|
|
||||||
if state.verbose:
|
|
||||||
args.append('--verbose')
|
|
||||||
|
|
||||||
subprocess.run(args, check=True, cwd=state.build_path, env=state.environment)
|
subprocess.run(args, check=True, cwd=state.build_path, env=state.environment)
|
||||||
|
|
||||||
def post_build(self, state: BuildState):
|
|
||||||
self.install(state, tool='ninja')
|
|
||||||
|
|
|
@ -148,9 +148,12 @@ class GlibTarget(base.MesonTarget):
|
||||||
def detect(self, state: BuildState) -> bool:
|
def detect(self, state: BuildState) -> bool:
|
||||||
return state.has_source_file('glib.doap')
|
return state.has_source_file('glib.doap')
|
||||||
|
|
||||||
def configure(self, state: BuildState):
|
# def configure(self, state: BuildState):
|
||||||
state.environment['LDFLAGS'] = '-framework CoreFoundation -framework Foundation'
|
# environment = state.environment
|
||||||
super().configure(state)
|
# assert 'LDFLAGS' not in environment
|
||||||
|
# environment['LDFLAGS'] = '-framework CoreFoundation -framework Foundation'
|
||||||
|
#
|
||||||
|
# super().configure(state)
|
||||||
|
|
||||||
def post_build(self, state: BuildState):
|
def post_build(self, state: BuildState):
|
||||||
super().post_build(state)
|
super().post_build(state)
|
||||||
|
@ -269,8 +272,8 @@ class MoltenVKTarget(base.MakeTarget):
|
||||||
|
|
||||||
def prepare_source(self, state: BuildState):
|
def prepare_source(self, state: BuildState):
|
||||||
state.download_source(
|
state.download_source(
|
||||||
'https://github.com/KhronosGroup/MoltenVK/archive/refs/tags/v1.2.2.tar.gz',
|
'https://github.com/KhronosGroup/MoltenVK/archive/refs/tags/v1.2.3.tar.gz',
|
||||||
'8065a10c2d70b561f48475dedb118e643176527b162d6e439fa127270c2a07dd',
|
'bb2c2e486284e0247a85e5f585425bfcb364bb13aa167047a16a1330b9a76e58',
|
||||||
patches='moltenvk-deployment-target')
|
patches='moltenvk-deployment-target')
|
||||||
|
|
||||||
def initialize(self, state: BuildState):
|
def initialize(self, state: BuildState):
|
||||||
|
|
|
@ -99,8 +99,8 @@ class MesonTarget(base.BuildTarget):
|
||||||
|
|
||||||
def prepare_source(self, state: BuildState):
|
def prepare_source(self, state: BuildState):
|
||||||
state.download_source(
|
state.download_source(
|
||||||
'https://github.com/mesonbuild/meson/releases/download/0.63.1/meson-0.63.1.tar.gz',
|
'https://github.com/mesonbuild/meson/releases/download/1.0.1/meson-1.0.1.tar.gz',
|
||||||
'06fe13297213d6ff0121c5d5aab25a56ef938ffec57414ed6086fda272cb65e9')
|
'd926b730de6f518728cc7c57bc5e701667bae0c3522f9e369427b2cc7839d3c1')
|
||||||
|
|
||||||
def detect(self, state: BuildState) -> bool:
|
def detect(self, state: BuildState) -> bool:
|
||||||
return state.has_source_file('meson.py')
|
return state.has_source_file('meson.py')
|
||||||
|
|
|
@ -28,8 +28,8 @@ class GlslangTarget(base.CMakeStaticDependencyTarget):
|
||||||
|
|
||||||
def prepare_source(self, state: BuildState):
|
def prepare_source(self, state: BuildState):
|
||||||
state.download_source(
|
state.download_source(
|
||||||
'https://github.com/KhronosGroup/glslang/archive/refs/tags/12.0.0.tar.gz',
|
'https://github.com/KhronosGroup/glslang/archive/refs/tags/12.1.0.tar.gz',
|
||||||
'7cb45842ec1d4b6ea775d624c3d2d8ba9450aa416b0482b0cc7e4fdd399c3d75')
|
'1515e840881d1128fb6d831308433f731808f818f2103881162f3ffd47b15cd5')
|
||||||
|
|
||||||
def configure(self, state: BuildState):
|
def configure(self, state: BuildState):
|
||||||
args = ('python3', 'update_glslang_sources.py')
|
args = ('python3', 'update_glslang_sources.py')
|
||||||
|
|
BIN
deps/meson/bin/meson
vendored
BIN
deps/meson/bin/meson
vendored
Binary file not shown.
19
deps/moltenvk/include/MoltenVK/mvk_datatypes.h
vendored
19
deps/moltenvk/include/MoltenVK/mvk_datatypes.h
vendored
|
@ -416,21 +416,14 @@ MTLBarrierScope mvkMTLBarrierScopeFromVkAccessFlags(VkAccessFlags vkAccess);
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Geometry conversions
|
#pragma mark Geometry conversions
|
||||||
|
|
||||||
/** Returns a VkExtent2D that corresponds to the specified CGSize. */
|
/**
|
||||||
static inline VkExtent2D mvkVkExtent2DFromCGSize(CGSize cgSize) {
|
* Returns a VkExtent2D that corresponds to the specified CGSize.
|
||||||
VkExtent2D vkExt;
|
* Rounds to nearest integer using half-to-even rounding.
|
||||||
vkExt.width = cgSize.width;
|
*/
|
||||||
vkExt.height = cgSize.height;
|
VkExtent2D mvkVkExtent2DFromCGSize(CGSize cgSize);
|
||||||
return vkExt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns a CGSize that corresponds to the specified VkExtent2D. */
|
/** Returns a CGSize that corresponds to the specified VkExtent2D. */
|
||||||
static inline CGSize mvkCGSizeFromVkExtent2D(VkExtent2D vkExtent) {
|
CGSize mvkCGSizeFromVkExtent2D(VkExtent2D vkExtent);
|
||||||
CGSize cgSize;
|
|
||||||
cgSize.width = vkExtent.width;
|
|
||||||
cgSize.height = vkExtent.height;
|
|
||||||
return cgSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns a Metal MTLOrigin constructed from a VkOffset3D. */
|
/** Returns a Metal MTLOrigin constructed from a VkOffset3D. */
|
||||||
static inline MTLOrigin mvkMTLOriginFromVkOffset3D(VkOffset3D vkOffset) {
|
static inline MTLOrigin mvkMTLOriginFromVkOffset3D(VkOffset3D vkOffset) {
|
||||||
|
|
102
deps/moltenvk/include/MoltenVK/vk_mvk_moltenvk.h
vendored
102
deps/moltenvk/include/MoltenVK/vk_mvk_moltenvk.h
vendored
|
@ -51,12 +51,12 @@ typedef unsigned long MTLArgumentBuffersTier;
|
||||||
*/
|
*/
|
||||||
#define MVK_VERSION_MAJOR 1
|
#define MVK_VERSION_MAJOR 1
|
||||||
#define MVK_VERSION_MINOR 2
|
#define MVK_VERSION_MINOR 2
|
||||||
#define MVK_VERSION_PATCH 2
|
#define MVK_VERSION_PATCH 3
|
||||||
|
|
||||||
#define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch))
|
#define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch))
|
||||||
#define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
|
#define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
|
||||||
|
|
||||||
#define VK_MVK_MOLTENVK_SPEC_VERSION 36
|
#define VK_MVK_MOLTENVK_SPEC_VERSION 37
|
||||||
#define VK_MVK_MOLTENVK_EXTENSION_NAME "VK_MVK_moltenvk"
|
#define VK_MVK_MOLTENVK_EXTENSION_NAME "VK_MVK_moltenvk"
|
||||||
|
|
||||||
/** Identifies the level of logging MoltenVK should be limited to outputting. */
|
/** Identifies the level of logging MoltenVK should be limited to outputting. */
|
||||||
|
@ -73,8 +73,11 @@ typedef enum MVKConfigLogLevel {
|
||||||
typedef enum MVKConfigTraceVulkanCalls {
|
typedef enum MVKConfigTraceVulkanCalls {
|
||||||
MVK_CONFIG_TRACE_VULKAN_CALLS_NONE = 0, /**< No Vulkan call logging. */
|
MVK_CONFIG_TRACE_VULKAN_CALLS_NONE = 0, /**< No Vulkan call logging. */
|
||||||
MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER = 1, /**< Log the name of each Vulkan call when the call is entered. */
|
MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER = 1, /**< Log the name of each Vulkan call when the call is entered. */
|
||||||
MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT = 2, /**< Log the name of each Vulkan call when the call is entered and exited. This effectively brackets any other logging activity within the scope of the Vulkan call. */
|
MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_THREAD_ID = 2, /**< Log the name and thread ID of each Vulkan call when the call is entered. */
|
||||||
MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION = 3, /**< Same as MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT, plus logs the time spent inside the Vulkan function. */
|
MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT = 3, /**< Log the name of each Vulkan call when the call is entered and exited. This effectively brackets any other logging activity within the scope of the Vulkan call. */
|
||||||
|
MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT_THREAD_ID = 4, /**< Log the name and thread ID of each Vulkan call when the call is entered and name when exited. This effectively brackets any other logging activity within the scope of the Vulkan call. */
|
||||||
|
MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION = 5, /**< Same as MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT, plus logs the time spent inside the Vulkan function. */
|
||||||
|
MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION_THREAD_ID = 6, /**< Same as MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT_THREAD_ID, plus logs the time spent inside the Vulkan function. */
|
||||||
MVK_CONFIG_TRACE_VULKAN_CALLS_MAX_ENUM = 0x7FFFFFFF
|
MVK_CONFIG_TRACE_VULKAN_CALLS_MAX_ENUM = 0x7FFFFFFF
|
||||||
} MVKConfigTraceVulkanCalls;
|
} MVKConfigTraceVulkanCalls;
|
||||||
|
|
||||||
|
@ -130,6 +133,24 @@ typedef enum MVKConfigFastMath {
|
||||||
MVK_CONFIG_FAST_MATH_MAX_ENUM = 0x7FFFFFFF
|
MVK_CONFIG_FAST_MATH_MAX_ENUM = 0x7FFFFFFF
|
||||||
} MVKConfigFastMath;
|
} MVKConfigFastMath;
|
||||||
|
|
||||||
|
/** Identifies available system data compression algorithms. */
|
||||||
|
typedef enum MVKConfigCompressionAlgorithm {
|
||||||
|
MVK_CONFIG_COMPRESSION_ALGORITHM_NONE = 0, /**< No compression. */
|
||||||
|
MVK_CONFIG_COMPRESSION_ALGORITHM_LZFSE = 1, /**< Apple proprietary. Good balance of high performance and small compression size, particularly for larger data content. */
|
||||||
|
MVK_CONFIG_COMPRESSION_ALGORITHM_ZLIB = 2, /**< Open cross-platform ZLib format. For smaller data content, has better performance and smaller size than LZFSE. */
|
||||||
|
MVK_CONFIG_COMPRESSION_ALGORITHM_LZ4 = 3, /**< Fastest performance. Largest compression size. */
|
||||||
|
MVK_CONFIG_COMPRESSION_ALGORITHM_LZMA = 4, /**< Slowest performance. Smallest compression size, particular with larger content. */
|
||||||
|
MVK_CONFIG_COMPRESSION_ALGORITHM_MAX_ENUM = 0x7FFFFFFF,
|
||||||
|
} MVKConfigCompressionAlgorithm;
|
||||||
|
|
||||||
|
/** Identifies the style of activity performance logging to use. */
|
||||||
|
typedef enum MVKConfigActivityPerformanceLoggingStyle {
|
||||||
|
MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_FRAME_COUNT = 0, /**< Repeatedly log performance after a configured number of frames. */
|
||||||
|
MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_IMMEDIATE = 1, /**< Log immediately after each performance measurement. */
|
||||||
|
MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_DEVICE_LIFETIME = 2, /**< Log at the end of the VkDevice lifetime. This is useful for one-shot apps such as testing frameworks. */
|
||||||
|
MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_MAX_ENUM = 0x7FFFFFFF,
|
||||||
|
} MVKConfigActivityPerformanceLoggingStyle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MoltenVK configuration settings.
|
* MoltenVK configuration settings.
|
||||||
*
|
*
|
||||||
|
@ -299,12 +320,13 @@ typedef struct {
|
||||||
uint32_t maxActiveMetalCommandBuffersPerQueue;
|
uint32_t maxActiveMetalCommandBuffersPerQueue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metal allows only 8192 occlusion queries per MTLBuffer. If enabled, MoltenVK
|
* Depending on the GPU, Metal allows 8192 or 32768 occlusion queries per MTLBuffer.
|
||||||
* allocates a MTLBuffer for each query pool, allowing each query pool to support
|
* If enabled, MoltenVK allocates a MTLBuffer for each query pool, allowing each query
|
||||||
* 8192 queries, which may slow performance or cause unexpected behaviour if the query
|
* pool to support that permitted number of queries. This may slow performance or cause
|
||||||
* pool is not established prior to a Metal renderpass, or if the query pool is changed
|
* unexpected behaviour if the query pool is not established prior to a Metal renderpass,
|
||||||
* within a renderpass. If disabled, one MTLBuffer will be shared by all query pools,
|
* or if the query pool is changed within a renderpass. If disabled, one MTLBuffer will
|
||||||
* which improves performance, but limits the total device queries to 8192.
|
* be shared by all query pools, which improves performance, but limits the total device
|
||||||
|
* queries to the permitted number.
|
||||||
*
|
*
|
||||||
* The value of this parameter may be changed at any time during application runtime,
|
* The value of this parameter may be changed at any time during application runtime,
|
||||||
* and the changed value will immediately effect subsequent MoltenVK behaviour.
|
* and the changed value will immediately effect subsequent MoltenVK behaviour.
|
||||||
|
@ -322,22 +344,23 @@ typedef struct {
|
||||||
VkBool32 presentWithCommandBuffer;
|
VkBool32 presentWithCommandBuffer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If enabled, swapchain images will use simple Nearest sampling when magnifying the
|
* If enabled, swapchain images will use simple Nearest sampling when minifying or magnifying
|
||||||
* swapchain image to fit a physical display surface. If disabled, swapchain images will
|
* the swapchain image to fit a physical display surface. If disabled, swapchain images will
|
||||||
* use Linear sampling when magnifying the swapchain image to fit a physical display surface.
|
* use Linear sampling when magnifying the swapchain image to fit a physical display surface.
|
||||||
* Enabling this setting avoids smearing effects when swapchain images are simple interger
|
* Enabling this setting avoids smearing effects when swapchain images are simple interger
|
||||||
* multiples of display pixels (eg- macOS Retina, and typical of graphics apps and games),
|
* multiples of display pixels (eg- macOS Retina, and typical of graphics apps and games),
|
||||||
* but may cause aliasing effects when using non-integer display scaling.
|
* but may cause aliasing effects when using non-integer display scaling.
|
||||||
*
|
*
|
||||||
* The value of this parameter may be changed before creating a VkSwapchain,
|
* The value of this parameter must be changed before creating a VkSwapchain,
|
||||||
* for the change to take effect.
|
* for the change to take effect.
|
||||||
*
|
*
|
||||||
* The initial value or this parameter is set by the
|
* The initial value or this parameter is set by the
|
||||||
* MVK_CONFIG_SWAPCHAIN_MAG_FILTER_USE_NEAREST
|
* MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST
|
||||||
* runtime environment variable or MoltenVK compile-time build setting.
|
* runtime environment variable or MoltenVK compile-time build setting.
|
||||||
* If neither is set, the value of this parameter defaults to true.
|
* If neither is set, the value of this parameter defaults to true.
|
||||||
*/
|
*/
|
||||||
VkBool32 swapchainMagFilterUseNearest;
|
VkBool32 swapchainMinMagFilterUseNearest;
|
||||||
|
#define swapchainMagFilterUseNearest swapchainMinMagFilterUseNearest
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The maximum amount of time, in nanoseconds, to wait for a Metal library, function, or
|
* The maximum amount of time, in nanoseconds, to wait for a Metal library, function, or
|
||||||
|
@ -359,8 +382,8 @@ typedef struct {
|
||||||
* If enabled, performance statistics, as defined by the MVKPerformanceStatistics structure,
|
* If enabled, performance statistics, as defined by the MVKPerformanceStatistics structure,
|
||||||
* are collected, and can be retrieved via the vkGetPerformanceStatisticsMVK() function.
|
* are collected, and can be retrieved via the vkGetPerformanceStatisticsMVK() function.
|
||||||
*
|
*
|
||||||
* You can also use the performanceLoggingFrameCount or logActivityPerformanceInline
|
* You can also use the activityPerformanceLoggingStyle and performanceLoggingFrameCount
|
||||||
* parameters to automatically log the performance statistics collected by this parameter.
|
* parameters to configure when to log the performance statistics collected by this parameter.
|
||||||
*
|
*
|
||||||
* The value of this parameter must be changed before creating a VkDevice,
|
* The value of this parameter must be changed before creating a VkDevice,
|
||||||
* for the change to take effect.
|
* for the change to take effect.
|
||||||
|
@ -768,21 +791,20 @@ typedef struct {
|
||||||
VkBool32 useMTLHeap;
|
VkBool32 useMTLHeap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controls whether MoltenVK should log the performance of individual activities as they happen.
|
* Controls when MoltenVK should log activity performance events.
|
||||||
* If this setting is enabled, activity performance will be logged when each activity happens.
|
|
||||||
* If this setting is disabled, activity performance will be logged when frame peformance is
|
|
||||||
* logged as determined by the performanceLoggingFrameCount value.
|
|
||||||
*
|
*
|
||||||
* The value of this parameter must be changed before creating a VkDevice,
|
* The value of this parameter must be changed before creating a VkDevice,
|
||||||
* for the change to take effect.
|
* for the change to take effect.
|
||||||
*
|
*
|
||||||
* The initial value or this parameter is set by the
|
* The initial value or this parameter is set by the
|
||||||
* MVK_CONFIG_PERFORMANCE_LOGGING_INLINE
|
* MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE
|
||||||
* runtime environment variable or MoltenVK compile-time build setting.
|
* runtime environment variable or MoltenVK compile-time build setting.
|
||||||
* If neither is set, this setting is disabled by default, and activity
|
* If neither is set, this setting is set to
|
||||||
* performance will be logged only when frame activity is logged.
|
* MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_FRAME_COUNT by default,
|
||||||
|
* and activity performance will be logged when frame activity is logged.
|
||||||
*/
|
*/
|
||||||
VkBool32 logActivityPerformanceInline;
|
MVKConfigActivityPerformanceLoggingStyle activityPerformanceLoggingStyle;
|
||||||
|
#define logActivityPerformanceInline activityPerformanceLoggingStyle
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controls the Vulkan API version that MoltenVK should advertise in vkEnumerateInstanceVersion().
|
* Controls the Vulkan API version that MoltenVK should advertise in vkEnumerateInstanceVersion().
|
||||||
|
@ -875,6 +897,27 @@ typedef struct {
|
||||||
*/
|
*/
|
||||||
MVKUseMetalArgumentBuffers useMetalArgumentBuffers;
|
MVKUseMetalArgumentBuffers useMetalArgumentBuffers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls the type of compression to use on the MSL source code that is stored in memory
|
||||||
|
* for use in a pipeline cache. After being converted from SPIR-V, or loaded directly into
|
||||||
|
* a VkShaderModule, and then compiled into a MTLLibrary, the MSL source code is no longer
|
||||||
|
* needed for operation, but it is retained so it can be written out as part of a pipeline
|
||||||
|
* cache export. When a large number of shaders are loaded, this can consume significant
|
||||||
|
* memory. In such a case, this parameter can be used to compress the MSL source code that
|
||||||
|
* is awaiting export as part of a pipeline cache.
|
||||||
|
*
|
||||||
|
* The value of this parameter can be changed at any time, and will affect the size of
|
||||||
|
* the cached MSL from subsequent shader compilations.
|
||||||
|
*
|
||||||
|
* The initial value or this parameter is set by the
|
||||||
|
* MVK_CONFIG_SHADER_COMPRESSION_ALGORITHM
|
||||||
|
* runtime environment variable or MoltenVK compile-time build setting.
|
||||||
|
* If neither is set, this setting is set to
|
||||||
|
* MVK_CONFIG_COMPRESSION_ALGORITHM_NONE by default,
|
||||||
|
* and MoltenVK will not compress the MSL source code after compilation into a MTLLibrary.
|
||||||
|
*/
|
||||||
|
MVKConfigCompressionAlgorithm shaderSourceCompressionAlgorithm;
|
||||||
|
|
||||||
} MVKConfiguration;
|
} MVKConfiguration;
|
||||||
|
|
||||||
/** Identifies the type of rounding Metal uses for float to integer conversions in particular calculatons. */
|
/** Identifies the type of rounding Metal uses for float to integer conversions in particular calculatons. */
|
||||||
|
@ -979,6 +1022,8 @@ typedef struct {
|
||||||
VkBool32 programmableSamplePositions; /**< If true, programmable MSAA sample positions are supported. */
|
VkBool32 programmableSamplePositions; /**< If true, programmable MSAA sample positions are supported. */
|
||||||
VkBool32 shaderBarycentricCoordinates; /**< If true, fragment shader barycentric coordinates are supported. */
|
VkBool32 shaderBarycentricCoordinates; /**< If true, fragment shader barycentric coordinates are supported. */
|
||||||
MTLArgumentBuffersTier argumentBuffersTier; /**< The argument buffer tier available on this device, as a Metal enumeration. */
|
MTLArgumentBuffersTier argumentBuffersTier; /**< The argument buffer tier available on this device, as a Metal enumeration. */
|
||||||
|
VkBool32 needsSampleDrefLodArrayWorkaround; /**< If true, sampling from arrayed depth images with explicit LoD is broken and needs a workaround. */
|
||||||
|
VkDeviceSize hostMemoryPageSize; /**< The size of a page of host memory on this platform. */
|
||||||
} MVKPhysicalDeviceMetalFeatures;
|
} MVKPhysicalDeviceMetalFeatures;
|
||||||
|
|
||||||
/** MoltenVK performance of a particular type of activity. */
|
/** MoltenVK performance of a particular type of activity. */
|
||||||
|
@ -996,6 +1041,8 @@ typedef struct {
|
||||||
MVKPerformanceTracker spirvToMSL; /** Convert SPIR-V to MSL source code. */
|
MVKPerformanceTracker spirvToMSL; /** Convert SPIR-V to MSL source code. */
|
||||||
MVKPerformanceTracker mslCompile; /** Compile MSL source code into a MTLLibrary. */
|
MVKPerformanceTracker mslCompile; /** Compile MSL source code into a MTLLibrary. */
|
||||||
MVKPerformanceTracker mslLoad; /** Load pre-compiled MSL code into a MTLLibrary. */
|
MVKPerformanceTracker mslLoad; /** Load pre-compiled MSL code into a MTLLibrary. */
|
||||||
|
MVKPerformanceTracker mslCompress; /** Compress MSL source code after compiling a MTLLibrary, to hold it in a pipeline cache. */
|
||||||
|
MVKPerformanceTracker mslDecompress; /** Decompress MSL source code to write the MSL when serializing a pipeline cache. */
|
||||||
MVKPerformanceTracker shaderLibraryFromCache; /** Retrieve a shader library from the cache, lazily creating it if needed. */
|
MVKPerformanceTracker shaderLibraryFromCache; /** Retrieve a shader library from the cache, lazily creating it if needed. */
|
||||||
MVKPerformanceTracker functionRetrieval; /** Retrieve a MTLFunction from a MTLLibrary. */
|
MVKPerformanceTracker functionRetrieval; /** Retrieve a MTLFunction from a MTLLibrary. */
|
||||||
MVKPerformanceTracker functionSpecialization; /** Specialize a retrieved MTLFunction. */
|
MVKPerformanceTracker functionSpecialization; /** Specialize a retrieved MTLFunction. */
|
||||||
|
@ -1217,9 +1264,8 @@ VKAPI_ATTR void VKAPI_CALL vkGetVersionStringsMVK(
|
||||||
/**
|
/**
|
||||||
* Sets the number of threads in a workgroup for a compute kernel.
|
* Sets the number of threads in a workgroup for a compute kernel.
|
||||||
*
|
*
|
||||||
* This needs to be called if you are creating compute shader modules from MSL
|
* This needs to be called if you are creating compute shader modules from MSL source code
|
||||||
* source code or MSL compiled code. Workgroup size is determined automatically
|
* or MSL compiled code. If you are using SPIR-V, workgroup size is determined automatically.
|
||||||
* if you're using SPIR-V.
|
|
||||||
*
|
*
|
||||||
* This function is not supported by the Vulkan SDK Loader and Layers framework
|
* This function is not supported by the Vulkan SDK Loader and Layers framework
|
||||||
* and is unavailable when using the Vulkan SDK Loader and Layers framework.
|
* and is unavailable when using the Vulkan SDK Loader and Layers framework.
|
||||||
|
|
BIN
deps/moltenvk/lib/libMoltenVK-static.a
vendored
BIN
deps/moltenvk/lib/libMoltenVK-static.a
vendored
Binary file not shown.
Loading…
Reference in a new issue