932 Commits

Author SHA1 Message Date
Chip Davis
75da0c694b Advertise the VK_EXT_robustness2 extension.
We only support the `robustImageAccess2` feature for now. Metal's
guarantees around out-of-bounds accesses to textures give us this for
free. `nullDescriptor` should also be possible to implement, but it
needs testing. Null image descriptors will probably just work, but null
buffer pointers probably not. We may need help, either from SPIRV-Cross
or a pass in SPIRV-Tools. `robustBufferAccess2` definitely needs an
assist from SPIRV-Tools. All three are useful for Direct3D compatibility
layers (DXVK, wined3d).
2020-06-16 12:06:38 -05:00
Bill Hollings
3505d5899d
Merge pull request #926 from billhollings/master
Fix issue where mapped host-coherent device memory not updated from image contents on macOS.
2020-06-16 11:39:27 -04:00
Bill Hollings
821dbd1240
Merge pull request #922 from Lichtso/VK_EXT_inline_uniform_block
Fixes 4 bugs in VK_EXT_inline_uniform_block
2020-06-16 11:38:25 -04:00
Bill Hollings
205b859580 Fix issue where mapped host-coherent device memory not updated from image contents on macOS.
Currently, when a mapping is initiated for host-coherent device memory, existing
image contents are copied from the MTLTexture to host memory. However, if
host-coherent device memory is already mapped in a long-standing memory mapping,
changes to MTLTexture content are not reflected to the host memory.

This change adds that capability to open memory mappings. When the image pipeline
barrier is applied to an image that is attached to a host-coherent device memory
that currently has an open memory mapping, the MTLTexture contents are copied to
the open host memory binding.

Add MVKMappedMemoryRange to retrieve the currently mapped range in an MVKDeviceMemory.

MVKImage cleanup use of isHostCoherent(). Let it be same as MVKDeviceMemory
and don't test for it from macOS because it is unnecessary.
2020-06-15 22:18:53 -04:00
Alexander Meißner
82a07ed468 Replaced _mtlBuffer by a malloc of _buffer and _length.
Added comments about why the third parameter of read() and write() is different.
2020-06-15 09:02:19 +02:00
Bill Hollings
c1c49def22 Move applyImageMemoryBarrier() logic to MVKImagePlane.
Mark MVKResource::bindDeviceMemory() as virtual.
Remove use of !! from mvkIsAnyFlagEnabled().
Update What's New document for VK_KHR_sampler_ycbcr_conversion.
2020-06-14 19:15:39 -04:00
Alexander Meißner
4a09c7aa20 Fixes 4 bugs in VK_EXT_inline_uniform_block:
descriptorCount measures bytes, array indices are offsets into the buffer,
missing isInline flag in bind, missing struct VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT.
2020-06-14 09:45:07 +02:00
Bill Hollings
4d69e0aecd Fix MVKImageViewPlane ignoring swizzle.
Allow MVKImageViewPlane MTLPixelFormat to be modified by swizzle settings.
Make MVKImageViewPlane a subclass of MVKBaseDeviceObject to streamline device access.
2020-06-13 22:08:58 -04:00
Bill Hollings
73eab172e0 Treat MVKImageMemoryBinding, MVKImagePlane, and MVKImageViewPlane
as subclasses of MVKBaseObject for lifecycles.

Remove use of unique_ptr to manage destruction of MVKImageMemoryBinding,
MVKImagePlane, and MVKImageViewPlane instances. Instead, call destroy()
on them during destruction of MVKImage and MVKImageView.
2020-06-13 20:18:06 -04:00
Bill Hollings
83bbd6e384 Fix use of needsHostReadSync().
MVKImageMemoryBinding::needsHostReadSync() use MVKPipelineBarrier.
Removed obsolete MVKResource::needsHostReadSync(), which was no longer being used.
2020-06-13 17:09:49 -04:00
Alexander Meißner
81dd248b36 Moves VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
from VkPhysicalDeviceProperties2 to VkImageFormatProperties2.
2020-06-13 11:11:53 +02:00
Bill Hollings
8be219f428
Merge pull request #915 from billhollings/master
Restore the correct value for maxDrawIndexedIndexValue.
2020-06-11 17:58:35 -04:00
Bill Hollings
348c064b75
Merge pull request #909 from Lichtso/VK_KHR_sampler_ycbcr_conversion
VK_KHR_sampler_ycbcr_conversion
2020-06-11 17:09:34 -04:00
Bill Hollings
05a2607391 Add explanatory comment regarding value of maxDrawIndexedIndexValue. 2020-06-11 17:08:32 -04:00
Bill Hollings
c39e90cbfd Restore the correct value for maxDrawIndexedIndexValue. 2020-06-11 17:03:03 -04:00
Bill Hollings
dd98fbd26f Remove use of @available() directive as it can cause issues in some build environments.
Generally replace use of @available() with respondsToSelector:.
Add mvkMakeOSVersion() and mvkOSVersionIsAtLeast(macos,ios) to help testing OS versions.
Set maxDrawIndexedIndexValue to kMVKUndefinedLargeUInt32 instead of uint32_t max.
2020-06-11 12:43:38 -04:00
Alexander Meißner
7a0dcc07e6 Minor fixes 2020-06-11 13:41:42 +02:00
Alexander Meißner
f2e8552caf Merge master into VK_KHR_sampler_ycbcr_conversion 2020-06-11 12:40:55 +02:00
Bill Hollings
752c1a908d Refactor Xcode build architectures
Set ARCHS build setting to $(ARCHS_STANDARD_64_BIT) in Xcode projects.
Remove ARCHS and VALID_ARCHS build settings in Xcode targets.
2020-06-09 16:39:23 -04:00
Bill Hollings
b408557c7e Set maxVertexInputBindingStride and maxVertexInputAttributeOffset to min Vulkan values.
Ensure kMVKUndefinedLarge... family of constant values are each a power-of-two.
Change several power-of-two math functions to template functions.
2020-06-09 14:44:50 -04:00
Bill Hollings
f39486666a Fix issue in reporting properties of substitutable VkFormats.
Report format properties only based on the primary MTLPixelFormat
of a VkFormat, not any possible substitution MTLPixelFormat.
Update MoltenVK version to 1.0.43 and VK_MVK_MOLTENVK_SPEC_VERSION to 26.
2020-06-09 12:01:55 -04:00
Alexander Meißner
5e4e2d83cc Merge master into VK_KHR_sampler_ycbcr_conversion 2020-06-08 00:05:16 +02:00
Alexander Meißner
0256b376da Optimizes chroma subsampling pixel formats. 2020-06-06 22:47:51 +02:00
Alexander Meißner
05e5af7dbf Adds support for descriptor assignment of multi planar images and samplers. 2020-06-05 14:58:19 +01:00
Jan Sikorski
fa63b92d5d Handle vertex attributes with zero stride 2020-06-04 17:45:05 +02:00
Alexander Meißner
3005a153bc Refactoring to support multiple MVKImageViewPlanes per MVKImageView. 2020-06-04 11:57:35 +02:00
Jan Sikorski
6df700f6e7 Don't try to move offset into stride for vertex attribute whose stride is 0 2020-06-04 09:31:34 +02:00
Bill Hollings
f5bf3e2b9f
Merge pull request #905 from Michael-Lfx/master
Fix typo.
2020-06-03 11:02:18 -04:00
Jfeng Lai
393bde8dfc
Fix typo. 2020-06-03 22:36:57 +08:00
Alexander Meißner
aac9d1d5a1 Refactoring separates the MTLTexture of MVKImageView into its own class.
Plus more adjustments to support multi planar images.
2020-06-03 11:35:57 +02:00
Bill Hollings
81b61f90d6
Merge pull request #901 from billhollings/master
Update dependency libraries to match Vulkan SDK 1.2.141.
2020-06-02 10:24:17 -04:00
Alexander Meißner
3b76e60137 Refactoring: Different extents of each image plane (chroma subsampling). 2020-06-02 09:39:18 +02:00
Jfeng Lai
f524be17f9
Fix typo. 2020-06-02 11:47:11 +08:00
Bill Hollings
8d7468effb Update maximum number of framebuffer layers to 2048. 2020-06-01 23:41:36 -04:00
Bill Hollings
4840c97e94 Update dependency libraries to match Vulkan SDK 1.2.141. 2020-06-01 17:35:31 -04:00
Bill Hollings
806482f786
Merge pull request #898 from js6i/master
Check for stencil only image view in identity swizzle case
2020-06-01 14:31:33 -04:00
Jan Sikorski
75856bbb6c Set buffer binding size accordingly 2020-06-01 17:05:47 +02:00
Alexander Meißner
90e9b58879 Adjustments to support multi planar images 2020-06-01 17:02:09 +02:00
Jan Sikorski
333c75a760 Check for stencil only image view in identity swizzle case 2020-06-01 16:36:22 +02:00
Jfeng Lai
d16b3d55e1
Fix typo. 2020-06-01 11:00:36 +08:00
Bill Hollings
1ef26259a7 Remove checking translated vertex bindings on inline buffers. 2020-05-31 21:38:05 -04:00
Bill Hollings
8671295570 Support vertex attribute offsets larger than the vertex buffer stride.
Add MVKTranslatedVertexBinding to describe a translated vertex binding, track these in
MVKGraphicsPipeline, and add a Metal vertex layout for each additional translated binding.
MVKGraphicsResourcesCommandEncoderState query MVKGraphicsPipeline for translated bindings
associated with existing bindings and binds the same MTLBuffer multiple times with
different offsets.
2020-05-31 14:16:12 -04:00
Alexander Meißner
72da2e4d11 Refactoring to support multiple MVKImagePlanes per MVKImage.
MVKImage uses VkFormat instead of MTLPixelFormat (to support multi planar images).
2020-05-31 16:51:46 +02:00
Bill Hollings
e302a6d023 Update to latest version of SPIRV-Cross.
Remove use of obsolete SPIRV-Cross API MSLVertexAttr content.
ExternalDependencies.xcodeproj updated to Xcode 11.5.
Update What's New document.
2020-05-30 16:07:47 -04:00
Bill Hollings
1ec032e5a3
Merge pull request #895 from billhollings/master
vkGetPhysicalDeviceFormatProperties() remove log message for unsupported format when retrieving properties.
2020-05-30 12:00:53 -04:00
Alexander Meißner
672ba74339 Refactoring separates the MTLTexture of MVKImage into its own class.
This is required for multi planar images which have multiple texture descriptors.
2020-05-30 15:19:18 +02:00
Michael(LAI)
6cb3307224
Fix typo 2020-05-30 16:53:53 +08:00
Bill Hollings
d2f0221f45 vkGetPhysicalDeviceFormatProperties() remove log message for unsupported format. 2020-05-29 18:34:48 -04:00
Michael(LAI)
dc672be179
Fix typo. 2020-05-29 18:16:51 +08:00
Bill Hollings
12cc82d5a7 Ensure vkGetPhysicalDeviceFormatProperties() are zerod for unsupported VkFormats.
Support MTLPixelFormats with larger values.
MVKPixelFormats::getVkFormatProperties() return
reference and log error if unsupported VkFormat.
Remove tests for null format name strings.
Consolidate MVKPhysicalDevice::getFormatProperties() overloads.
2020-05-28 10:43:29 -04:00