163 Commits

Author SHA1 Message Date
Bill Hollings
d505f71546 Merge branch 'master' of https://github.com/KhronosGroup/MoltenVK 2018-09-07 11:53:39 -04:00
Bill Hollings
e721dd6e2c Update build process.
Allow building and packaging MoltenVK for of only iOS or only macOS.
Move packaging scripts out of Xcode projects and into script files.
2018-09-07 11:46:58 -04:00
Bill Hollings
7fb064fdee
Merge pull request #244 from cdavis5e/image-fake-2d-view
MVKImageView: Create 3D MTLTextureViews for 2D image views of 3D textures.
2018-09-07 11:12:03 -04:00
Chip Davis
a0d567da92 Fix Clang warning about order of operations. 2018-09-06 20:04:41 -05:00
Chip Davis
78a59a3e37 Try harder to avoid creating texture views with 3D textures.
Also, warn only when the texture may be used for a purpose other than as
a color attachment. Fail outright if it won't ever be used for that
purpose, or if the view doesn't cover the entirety of the volume.
2018-09-05 11:55:39 -05:00
Chip Davis
f1b62ed297 Don't fail creation of the ImageView. 2018-09-05 11:55:35 -05:00
Chip Davis
7fd270edb6 MVKDevice: Fix a segfault walking unknown extension structs.
The problem is that on 64-bit platforms (i.e. every platform we support)
there will be padding between the `sType` and `pNext` members of any
extensible Vulkan structure, because `sType` is only 4 bytes while
`pNext` is 8 (and needs 8-byte alignment).

Should fix a segfault running `vulkaninfo`.
2018-09-05 11:15:04 -05:00
Chip Davis
acf63a16e7 MVKImageView: Create 3D MTLTextureViews for 2D image views of 3D textures.
This won't help using these image views from shaders, but it will help
attaching them to framebuffers.

I've left the warning in `validateImageViewConfig()` in place.
2018-09-05 10:21:09 -05:00
Chip Davis
d557b51433 Fix a silly omission that breaks the build. 2018-09-02 22:23:52 -05:00
Chip Davis
63c6e4d8c4 Support the VK_KHR_descriptor_update_template extension. 2018-09-02 15:28:39 -05:00
Bill Hollings
c369da1cdd Update to What's New document.
Update to latest version of SPIRV-Cross.
2018-09-01 18:27:07 -04:00
Bill Hollings
23df850465 Merge and fix conflicts between extension enhancement commits. 2018-09-01 17:22:33 -04:00
Bill Hollings
63ce4cf1f5 Vulkan extension enhancements.
Add MVKExtensionList struct to track supported and enabled Vulkan extensions within MVKInstance & MVKDevice.
Log supported and enabled Vulkan extensions for VkInstance & VkDevice.
Add error handling for descriptor sets & 3D images in VK_KHR_maintenance1 extension.
All header files load mvk_vulkan.h instead of vulkan.h for consistent use of macOS & iOS extensions.
2018-09-01 16:42:10 -04:00
Chip Davis
54f69c30e7 Support the VK_KHR_push_descriptor extension. 2018-08-31 15:13:46 -05:00
Chip Davis
80bde624cf Support the VK_KHR_get_physical_device_properties2 extension.
This extension is a prerequisite for multiple other extensions, the
`VK_KHR_push_descriptor` extension in particular.
2018-08-31 14:20:44 -05:00
Chip Davis
ccb1afe42b Support the VK_KHR_shader_draw_parameters extension.
Update SPIRV-Cross to support shaders which use the builtins provided by
this extension.
2018-08-30 09:10:47 -05:00
Chip Davis
396add581a Support the VK_KHR_maintenance1 extension.
Much of this was already supported, simply by being supported by Metal.
Of course, this support is incomplete: Metal doesn't yet allow you to
create a 2D texture view from a 3D texture.
2018-08-27 12:42:20 -05:00
Bill Hollings
c8a9841d8c Support pre-linking on both Xcode 9 & 10. Update library dependencies.
Remove linking MoltenVKSPIRVToMSLConverter from Build Phase in favour of PreLink.
Update to Vulkan header 1.1.83.
Update to latest version of library dependencies.
2018-08-23 14:02:05 -04:00
Bill Hollings
5bc8403cc1 Support Xcode 10.
Explicitly specify MoltenVKSPIRVToMSLConverter as prelink library.
Update build setting verification check.
2018-08-22 16:22:37 -04:00
Bill Hollings
55e80b20a6 Move MoltenVK config to instance instead of device.
Add MVKConfiguration and deprecate MVKDeviceConfiguration.
Add vkGetMoltenVKConfigurationMVK() and deprecate vkGetMoltenVKDeviceConfigurationMVK().
Add vkSetMoltenVKConfigurationMVK() and deprecate vkSetMoltenVKDeviceConfigurationMVK().
Add build setting overrides for all initial MVKConfiguration member values.
Update to MoltenVK version 1.0.19.
Update to VK_MVK_moltenvk spec version 7.
2018-08-22 10:41:50 -04:00
Bill Hollings
97df931b43 vkGetPhysicalDeviceFormatProperties() return VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT if supported, even if other format properties are not. 2018-08-15 13:14:43 -04:00
Bill Hollings
0cbc5b086f Fix API for updating MVKDeviceConfiguration::synchronousQueueSubmits.
Notify MVKQueues when MVKDeviceConfiguration::synchronousQueueSubmits changes.
MVKQueue use or not use separate dispatch queue as a result.
2018-08-14 16:08:26 -04:00
Bill Hollings
008274ba67 Support Metal GPU capture scopes.
Add MVKGPUCaptureScope class.
MVKQueue support separate presentation and submission scopes.
2018-08-14 12:32:01 -04:00
Bill Hollings
bd177633ca Update to latest SPIRV-Cross, glslang & SPIRV-Tools.
Update MoltenVK version to 1.0.18.
2018-08-11 16:20:58 -04:00
Bill Hollings
c89fb51003 vkCmdFullBuffer() fills buffer using compute shader.
MVKCmdCopyBuffer passes MVKCmdCopyBufferInfo struct to compute shader.
mvkAlignByteOffset(), mvkAlignAddress() & mvkAlignByteRef() functions allow aligning downwards.
Add mvkFits() function.
2018-08-09 15:10:09 -04:00
Bill Hollings
e39d7e6394 Only update CAMetalLayer drawableSize property during swapchain creation.
Simplify structure of MVKQueue::submit() functions.
2018-08-01 15:29:15 -04:00
Bill Hollings
1fecef0636 Rename folders and project for Cube demo.
Update What's New document.
Remove obsolete deprecated licensing functions.
2018-07-31 13:10:44 -04:00
Bill Hollings
1b6289d5b7 Disable rasterization and return void from vertex shaders that write to resources.
Add SPIRVToMSLConverterOptions::isRasterizationDisabled to allow pipeline
and vertex shader to communicate rasterization status.
Update to latest SPIRV-Cross version.
Update MoltenVK version to 1.0.17.
2018-07-29 15:50:51 -04:00
Bill Hollings
0ac3503908 Merge branch 'master' of https://github.com/KhronosGroup/MoltenVK 2018-07-27 19:24:49 -04:00
aerofly
fcbe9f86fd support VK_FORMAT_A2B10G10R10_SNORM_PACK32 2018-07-27 16:45:34 +02:00
aerofly
0d257fa710 new vertex format VK_FORMAT_A2B10G10R10_SNORM_PACK32 2018-07-27 09:42:15 +02:00
Bill Hollings
d51e9faa33 Merge branch 'master' of https://github.com/KhronosGroup/MoltenVK 2018-07-25 09:42:12 -04:00
Philip Rideout
93ff3564b1
Do not kill pipeline when fragment shader is invalid. 2018-07-24 13:23:43 -07:00
Bill Hollings
b796a65cd3 Track layered rendering capability.
Add MVKPhysicalDeviceMetalFeatures::layeredRendering.
Add mvkStaticCmdShaderSource() to generate static MSL shader source for commands.
Add MVKDevice::getMTLCompileOptions() to consolidate shader compilation options.
Fix watermark timing.
Upgrade MoltenVK spec version to 6.
2018-07-24 14:21:37 -04:00
Philip Rideout
00e84bbf11
CreatePipelines should not return SUCCESS when MSL translation fails.
When vertex shader translation fails, we were already calling setConfigurationResult, but we were not doing this for fragment shaders.
2018-07-24 11:07:44 -07:00
Bill Hollings
0afb42107f Retrieve VkPhysicalDeviceLimits::maxComputeWorkGroupSize &
maxComputeWorkGroupInvocations & maxComputeSharedMemorySize from MTLDevice.
2018-07-23 23:52:21 -04:00
Bill Hollings
2d4de6db68 Fixes to attachment and image clearing to pass CTS tests.
MVKCmdClearAttachments support clearing multiple attachment layers.
MVKCmdClearImage use renderpass clear, and support clearning multiple image layers.
Rename mvkCmdClearImage() to mvkCmdClearColorImage().
MVKDevice add getFormatIsSupported() to allow devices to test for format support.
MVKFramebuffer support multiple layers.
mvk_datatypes.h support both 2D and 3D mipmap calculations and allow
mvkMTLPrimitiveTopologyClassFromVkPrimitiveTopology() in iOS.
Remove support for VK_FORMAT_B10G11R11_UFLOAT_PACK32 & VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
since format components are reversed on Metal.
Move OS extension source files to new OS directory.
Update to latest SPIRV-Cross version.
Update MoltenVK version to 1.0.16.
2018-07-23 20:12:57 -04:00
Bill Hollings
86bb51554b Support IOSurface on iOS only if IPHONEOS_DEPLOYMENT_TARGET is at least iOS 11.0.
On iOS, only compile IOSurface support, and link IOSurface framework to
libMoltenVK.dylib, if IPHONEOS_DEPLOYMENT_TARGET is at least iOS 11.0.
Update to latest version of SPIRV-Cross.
Update MoltenVK version to 1.0.15.
2018-07-12 18:26:54 -04:00
Nat Brown
4ef6a0f8c9 Removes references to IOSurface framework on IOS and markes the IOSurface features as unavailable. A better solution would be to not support IOSurface features prior to iOS 11.0 when the framework became partially public, but this is a good initial solution. 2018-07-09 06:26:11 -07:00
Bill Hollings
6950102404 Set correct value for VkPhysicalDeviceLimits::maxPerStageDescriptorInputAttachments. 2018-07-04 12:48:47 -04:00
Bill Hollings
e203b93285 Fix compute shader workgroup size specialization.
Support separate specialization for each workgroup dimension.
Support zero as a specialization ID value.
Cleanup MoltenVKShaderConverterTool.
Update to latest SPIRV-Cross version.
Update MoltenVK version to 1.0.14.
2018-07-03 13:57:53 -04:00
Bill Hollings
5280e9515a vkGetPhysicalDeviceImageFormatProperties() indicate 1D texture limitations. 2018-06-28 17:46:14 -04:00
Bill Hollings
42d42721bd Improve crispness of visuals on macOS Retina displays.
Set CAMetalLayer magnificationFilter property to Nearest by default.
Add MVKDeviceConfiguration::swapchainMagFilterUseNearest member to allow overrides.
2018-06-28 14:07:58 -04:00
Bill Hollings
e959b9d9a6 Support larger VkBufferViews by using 2D Metal textures.
Map 1D buffer view contents to 2D Metal texture.
Add MVKPhysicalDeviceMetalFeatures::maxTextureDimension element.
Set VkPhysicalDeviceLimits::maxTexelBufferElements to maxTextureDimension ^ 2.
Shaders accessing buffer view use special function to map 1D buffer view coordinates
to 2D Metal texture coordinates.
Pass maxTextureDimension to shader.
Update to latest SPIRV-Cross version for appropriate shaders.
Update MoltenVK version to 1.0.13.
2018-06-27 18:03:30 -04:00
Bill Hollings
d34c790bea Swapchain return VK_ERROR_OUT_OF_DATE_KHR when window resized. 2018-06-23 15:53:16 -04:00
Bill Hollings
10a023debe Update to latest library dependencies to match Vulkan SDK 1.1.77.
Update MoltenVK version to 1.0.12.
2018-06-15 15:14:59 -04:00
Bill Hollings
e90480ea99 vkCmdClearImage() fixes to clearing depth and stencil formats and avoid Metal validation errors. 2018-06-15 14:25:52 -04:00
Bill Hollings
9ae35d73c4 Update Xcode version checks to Xcode 9.4. 2018-06-14 12:46:41 -04:00
Bill Hollings
1b9946c15d vkCmdBlitImage() remove broken support for depth/stencil scaling. 2018-06-13 15:55:33 -04:00
Bill Hollings
84ffa1844e vkCmdBlitImage() support texture arrays as source and destination targets. 2018-06-13 13:36:08 -04:00