2451 Commits

Author SHA1 Message Date
Nikita Fediuchin
4efb90b3c1 Update license year 2022-02-04 13:33:27 +02:00
Bill Hollings
9366457b86
Merge pull request #1509 from billhollings/shaderconverter-updates
MoltenVKShaderConverter updates
2022-01-19 17:06:15 -05:00
Bill Hollings
d4daba6687 MoltenVKShaderConverter updates.
mvk::getShaderOutputs() in SPRIVReflection.h support flattening nested structures.
MoltenVKShaderConverter tool support loading tessellation shader files.
MoltenVKShaderConverter tool update to MSL 2.4 by default.
Remove use of deprecated MTLCreateSystemDefaultDevice().
Update to latest version of SPIRV-Cross.
2022-01-19 15:55:44 -05:00
Bill Hollings
a8149aa45e
Merge pull request #1502 from mbechard/master
fix for #1501
2022-01-05 20:53:34 -05:00
Malcolm Bechard
f3f02c327c fix for #1501
Maintain the incrementing location throughout the structure traversal.
2022-01-05 15:25:16 -05:00
Bill Hollings
9986e92f35
Merge pull request #1497 from billhollings/apple-silicon-deviceID
On Apple Silicon, set VkPhysicalDeviceProperties::deviceID from GPU capabilities.
2021-12-28 22:08:44 -05:00
Bill Hollings
54cdb4706e
Merge pull request #1500 from billhollings/normalize-gpu-counters
Improve accuracy of VkPhysicalDeviceLimits::timestampPeriod.
2021-12-28 22:08:25 -05:00
Bill Hollings
7740d4f43a
Change scale of OSMin value in deviceID to 100.
Co-authored-by: Chip Davis <cdavis@codeweavers.com>
2021-12-28 19:58:10 -05:00
Bill Hollings
cd7c7fdfae Support MTLTimestamp on Xcode 11.7. 2021-12-28 18:12:25 -05:00
Bill Hollings
9633f4843d Improve accuracy of VkPhysicalDeviceLimits::timestampPeriod.
If using GPU counters, on all Apple GPUs lock timestampPeriod to 1.0,
since Apple GPUs use nanoseconds, and on non-Apple GPUs, dynamically
adapt value of timestampPeriod by correlating GPU ticks with GPU ticks.

If using CPU sync, set timestampPeriod to OS CPU timestamp tick period.
2021-12-28 17:19:11 -05:00
Bill Hollings
a1e5ed97a1
Merge pull request #1498 from billhollings/xcode-13.2-build-settings
Support Xcode 13.2 build settings.
2021-12-27 21:16:02 -05:00
Bill Hollings
3a8975c21d Support Xcode 13.2 build settings. 2021-12-27 17:50:29 -05:00
Bill Hollings
df043487e4 On Apple Silicon, set VkPhysicalDeviceProperties::deviceID from GPU capabilities.
Previously, on Apple Silicon (iOS, tvOS & macOS M1), we tried to guess
deviceID from GPU parameters, but this is becoming harder as the types
of Apple Silicon is growing, and the actual device SoC itself is less
relevant that the GPU capabilities. So we now set deviceID from the
combination of OS version and GPU type.

Rename MVKDevice::getHighestMTLFeatureSet() to getHighestGPUCapability().
2021-12-27 16:45:12 -05:00
Bill Hollings
939d51da71
Merge pull request #1494 from billhollings/fix-subpass-mtltex-mem-leak
Fix memory leak of dummy MTLTexture in render subpasses that use no attachments.
2021-12-27 13:00:34 -05:00
Bill Hollings
5810772644 Fix merge conflicts and syntax build error in iOS build. 2021-12-26 18:30:31 -05:00
Bill Hollings
66a171a25d
Merge pull request #1490 from billhollings/strip-promoted-static-vulkan-symbols
Optionally hide additional static Vulkan linkage symbols.
2021-12-26 17:24:19 -05:00
Bill Hollings
b943446a78
Merge pull request #1493 from billhollings/fix-assgnmt-op-retain-release
Fix Metal object retain-release errors in assignment operators.
2021-12-26 17:19:58 -05:00
Bill Hollings
92712e240a Fix memory leak of dummy MTLTexture in render subpasses that use no attachments.
Older Metal does not support rendering without subpass attachments.
In this case, a dummy attachment with a dummy MTLTexture is created
whenever the subpass begins, but was not being correctly used.

Move the creation, retaining, and releasing of the dummy MTLTexture to
MVKFramebuffer, where the extent and layer count is known and can be reused.

Pass framebuffer to MVKCommandEncoder::beginRenderpass() and remember
current framebuffer in MVKCommandEncoder.
Add getFramebufferExtent() and getFramebufferLayerCount() to MVKCommandEncoder.
Pass framebuffer to MVKRenderSubpass:populateMTLRenderPassDescriptor() and
retrieve dummy MTLTexture from framebuffer.
2021-12-25 16:18:18 -05:00
Bill Hollings
355bfed457 Fix Metal object retain-release errors in assignment operators. 2021-12-25 12:58:55 -05:00
Bill Hollings
52568efb27 Optionally hide additional static Vulkan linkage symbols.
Move the aliasing of promoted function pointers to the function pointer
lookup collection, because non-global function alias symbols are not
available in separately compiled object file.

Add public aliased Vulkan extension functions that were promoted to 1.1 to
the public symbols that are hidden when MVK_HIDE_VULKAN_SYMBOLS is enabled.

Add functions from the private VK_MVK_moltenvk extension that depend on
Vulkan object handles to the public symbols that are hidden when
MVK_HIDE_VULKAN_SYMBOLS is enabled, to discourage their use by apps that
are using the Vulkan Loader and Layers, because they are not supported by
the Vulkan Loader and Layers.

Update VK_MVK_MOLTENVK_SPEC_VERSION to version 33.
2021-12-18 14:00:37 -05:00
Bill Hollings
bc4ce5799c
Merge pull request #1485 from billhollings/rosetta2-and-msl24
Updates to better support Rosetta2 runtimes, and MSL 2.4 and 2.3 versions.
2021-12-02 16:40:48 -05:00
Bill Hollings
e74cf2f094 Fix build macros for tvOS, plus support MTLGPUFamilyApple8.
Don't use tests for MTLGPUFamilyApple6 and MTLGPUFamilyApple7 in tvOS build.
Advertise MTLGPUFamilyApple8 GPU and A15 SoC device if present.
2021-12-02 09:47:56 -05:00
Bill Hollings
479d55f2aa Wrap MTLGPUFamilyApple6 and MTLGPUFamilyApple7 in build macros for Xcode 11.7. 2021-12-01 19:13:29 -05:00
Bill Hollings
18642002ce Updates to better support Rosetta2 runtimes, and MSL 2.4 and 2.3 versions.
Do not use MTLEvent for VkSemaphore under Rosetta2.
Remove compile test for MVK_MACOS_APPLE_SILICON and MVK_APPLE_SILICON when testing
for Apple GPU families, to allow x86 builds to test for Apple GPU under Rosetta2.
Simplify identifying M1 GPU. All M1 SoCs currently support the A14 (Apple7) GPU.
Support compiling MSL 2.4 in runtime pipelines and MoltenVKShaderConverterTool.
Fix issue where MSL 2.3 only available on Apple Silicon, even on macOS.
Update to latest SPIRV-Cross (unrelated to Rosetta2).
2021-12-01 18:14:07 -05:00
Bill Hollings
c376273b74
Merge pull request #1481 from cfnptr/master
Clean up MVKLogging
2021-11-26 04:38:15 -05:00
Nikita Fediuchin
0da221f48c Fix documentation and header 2021-11-26 10:11:16 +02:00
Nikita Fediuchin
6ac92fbacf Clean up MVKLogging
* Replaced ASL levels with MVKConfigLogLevel.
* Moved MVKLogging.h to Utility/ directory.
* Added MVKConfigLogLevel Warning and Debug levels.
2021-11-25 09:47:43 +02:00
Bill Hollings
80256771f7
Merge pull request #1478 from billhollings/strip-static-vulkan-symbols
Support building MoltenVK with static Vulkan linkage symbols hidden.
2021-11-17 20:15:57 -05:00
Bill Hollings
5de7f5551c Support building MoltenVK with static Vulkan linkage symbols hidden.
Add build environment variable MVK_HIDE_VULKAN_SYMBOLS. to allow MoltenVK
to be built with static Vulkan API symbols hidden, to avoid library linking
conflicts when bound to a Vulkan Loader that also exports identical symbols.

The default value of MVK_HIDE_VULKAN_SYMBOLS is 0,
meaning Vulkan static symbols are exposed by default.

Add MVK_PUBLIC_VULKAN_SYMBOL directive to mark each Vulkan call symbols
for exporting or hiding.

Update the MoltenVK Xcode project to add the MVK_HIDE_VULKAN_SYMBOLS build
setting, and set the ENABLE_TESTABILITY build setting to NO, because it
conflicts with stripping symbols.

Update MoltenVK version to 1.1.7.
2021-11-17 18:22:33 -05:00
Bill Hollings
b3ef160c54
Merge pull request #1470 from billhollings/sdk-1.2.198
Update library dependencies to match Vulkan SDK 1.2.198.
2021-11-15 12:03:37 -05:00
Bill Hollings
a0ed3345b6 Update library dependencies to match Vulkan SDK 1.2.198.
Update What's New.md document.
2021-11-13 19:57:41 -05:00
Bill Hollings
f99384da96
Merge pull request #1467 from billhollings/restore-bc1-rgb-support
Restore support for BC1_RGB compressed formats.
2021-11-10 14:43:49 -05:00
Bill Hollings
a5d0464a43 Update BC1_RGB swizzle to accommodate RGB values swizzled to or from alpha. 2021-11-10 13:41:07 -05:00
Bill Hollings
6e054ad5db Restore support for BC1_RGB compressed format.
For Vulkan BC1_RGB formats, swizzle alpha of substituted
Metal BC1_RGBA to 1.0, to return value expected by Vulkan.
2021-11-09 12:13:51 -05:00
Bill Hollings
0516bb84e9
Merge pull request #1460 from billhollings/remove-bc1-rgb
Remove advertised support for BC1_RGB texel formats.
2021-11-01 11:58:15 -04:00
Bill Hollings
bab17a52b7 Remove advertised support for BC1_RGB texel formats.
Metal does not provide direct support for BC1_RGB formats
(VK_FORMAT_BC1_RGB_UNORM_BLOCK & VK_FORMAT_BC1_RGB_SRGB_BLOCK).
We have been faking it by mapping these Vulkan formats to Metal
formats containing alpha (MTLPixelFormatBC7_RGBAUnorm &
MTLPixelFormatBC7_RGBAUnorm_sRGB, respectively),
and advertising support for BC1_RGB formats.

However, this triggers CTS failures, because the BC1_RGBA formats can return
an alpha value of 0.0 when constructed that way, whereas the BC1_RGB formats
always expect 1.0 (opaque) to be returned.

This change moves to indirect support for BC1_RGB formats. They will still
be covered by MTLPixelFormatBC7_RGBAUnorm & MTLPixelFormatBC7_RGBAUnorm_sRGB,
and will effectively work (except transparency), but are no longer advertised
through physical device format and image format queries.
2021-10-31 19:00:25 -04:00
Bill Hollings
de201b4b9f
Merge pull request #1458 from js6i/master
MVKImage: Select proper base layer and mipmap for attachment if not using view because of swizzling.
2021-10-26 11:05:09 -04:00
Jan Sikorski
99dcaaa070 MVKImage: Select proper base layer and mipmap for attachment if not using view because of swizzling. 2021-10-26 10:19:12 +02:00
Bill Hollings
b9863dfd78
Merge pull request #1459 from EwoutH/patch-3
CI: Update builds to Xcode 13.1, add legacy 12.5.1 build
2021-10-25 14:56:33 -04:00
Ewout ter Hoeven
ce0ad1d3ac
CI: Make macOS version explicit
Xcode 11.7 uses macOS 10.5, Xcode 12.5.1 and 13.1 uses macOS 11.
2021-10-25 19:34:37 +02:00
Ewout ter Hoeven
d12fdb5b63
CI: Update builds to Xcode 13.1, add legacy 12.5.1 build
Updates the regular macOS, maccat, iOS and tvOS builds to use Xcode 13.1 instead of 12.4. Also adds a legacy build using Xcode 12.5.1.
2021-10-25 19:27:33 +02:00
Bill Hollings
20ea5413f5
Merge pull request #1446 from cfnptr/master
Add unsupported VkApplicationInfo->apiVersion warning
2021-10-14 16:50:30 -04:00
Nikita Fediuchin
fae1bb53a6 Fix apiVersion check condition 2021-10-06 21:25:01 +03:00
Nikita Fediuchin
c8813898cf Add MVKLogWarning, apiVersion warning
* Added MVKLogWarning logger, and updated header comments.
* Added greater _appInfo.apiVersion  than MoltenVK version warning.
2021-10-04 12:03:36 +03:00
Nikita Fediuchin
a22dfba076 Fix spacing 2021-10-04 00:17:51 +03:00
Nikita Fediuchin
a001c4344e Add VkInstance apiVersion warning 2021-10-04 00:13:14 +03:00
Bill Hollings
d833ce95d7
Merge pull request #1444 from billhollings/dynamic-pipeline-state-fix
Ensure dynamic pipeline state always respects pipeline dynamic flags.
2021-10-01 10:10:34 -04:00
Bill Hollings
cc10af04c9 Ensure dynamic pipeline state always respects pipeline dynamic flags.
Dynamic pipeline state set before the pipeline is set was reading
dynamic flags from previous pipeline. This is fixed here by accepting
the dynamic state, but deferring the decision to use either dynamic
or static state until the pipeline is encoded.
2021-09-30 21:09:07 -04:00
Bill Hollings
82efcb6722
Merge pull request #1443 from billhollings/multilayer-rendering-validation-fix
Move multilayer-rendering validation from MVKImage to MVKImageView.
2021-09-30 15:51:08 -04:00
Bill Hollings
36fae88ee2 Move multilayer-rendering validation from MVKImage to MVKImageView.
An MVKImageView that renders to only one layer of a multilayer MVKImage
is not performing multilayer-rendering. Only validate multilayer-rendering
when it is definitely requested in an MVKImageView, instead of presuming
when a multilayer MVKImage is marked for rendering.
2021-09-30 15:30:23 -04:00