Adds support for vkGetMTLBufferMVK which returns current metal buffer id for a specific vulkan buffer
This commit is contained in:
parent
06e41fab6a
commit
d1752cda70
@ -656,6 +656,7 @@ typedef void (VKAPI_PTR *PFN_vkGetVersionStringsMVK)(char* pMoltenVersionStringB
|
|||||||
typedef void (VKAPI_PTR *PFN_vkGetMTLDeviceMVK)(VkPhysicalDevice physicalDevice, id<MTLDevice>* pMTLDevice);
|
typedef void (VKAPI_PTR *PFN_vkGetMTLDeviceMVK)(VkPhysicalDevice physicalDevice, id<MTLDevice>* pMTLDevice);
|
||||||
typedef VkResult (VKAPI_PTR *PFN_vkSetMTLTextureMVK)(VkImage image, id<MTLTexture> mtlTexture);
|
typedef VkResult (VKAPI_PTR *PFN_vkSetMTLTextureMVK)(VkImage image, id<MTLTexture> mtlTexture);
|
||||||
typedef void (VKAPI_PTR *PFN_vkGetMTLTextureMVK)(VkImage image, id<MTLTexture>* pMTLTexture);
|
typedef void (VKAPI_PTR *PFN_vkGetMTLTextureMVK)(VkImage image, id<MTLTexture>* pMTLTexture);
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkGetMTLBufferMVK)(VkBuffer buffer, id<MTLBuffer>* pMTLBuffer);
|
||||||
typedef VkResult (VKAPI_PTR *PFN_vkUseIOSurfaceMVK)(VkImage image, IOSurfaceRef ioSurface);
|
typedef VkResult (VKAPI_PTR *PFN_vkUseIOSurfaceMVK)(VkImage image, IOSurfaceRef ioSurface);
|
||||||
typedef void (VKAPI_PTR *PFN_vkGetIOSurfaceMVK)(VkImage image, IOSurfaceRef* pIOSurface);
|
typedef void (VKAPI_PTR *PFN_vkGetIOSurfaceMVK)(VkImage image, IOSurfaceRef* pIOSurface);
|
||||||
#endif // __OBJC__
|
#endif // __OBJC__
|
||||||
@ -927,6 +928,19 @@ VKAPI_ATTR void VKAPI_CALL vkGetMTLTextureMVK(
|
|||||||
VkImage image,
|
VkImage image,
|
||||||
id<MTLTexture>* pMTLTexture);
|
id<MTLTexture>* pMTLTexture);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns, in the pMTLBuffer pointer, the MTLBuffer currently underlaying the VkImage.
|
||||||
|
*
|
||||||
|
* This function is not supported by the Vulkan SDK Loader and Layers framework.
|
||||||
|
* The VkImage object you provide here must have been retrieved directly from
|
||||||
|
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
|
||||||
|
* objects are often changed by layers, and passing them from one layer to another,
|
||||||
|
* or from a layer directly to MoltenVK, will result in undefined behaviour.
|
||||||
|
*/
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkGetMTLBufferMVK(
|
||||||
|
VkBuffer buffer,
|
||||||
|
id<MTLBuffer>* pMTLBuffer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates that a VkImage should use an IOSurface to underlay the Metal texture.
|
* Indicates that a VkImage should use an IOSurface to underlay the Metal texture.
|
||||||
*
|
*
|
||||||
|
@ -598,6 +598,7 @@ void MVKInstance::initProcAddrs() {
|
|||||||
ADD_INST_EXT_ENTRY_POINT(vkGetMTLDeviceMVK, MVK_MOLTENVK);
|
ADD_INST_EXT_ENTRY_POINT(vkGetMTLDeviceMVK, MVK_MOLTENVK);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkSetMTLTextureMVK, MVK_MOLTENVK);
|
ADD_INST_EXT_ENTRY_POINT(vkSetMTLTextureMVK, MVK_MOLTENVK);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkGetMTLTextureMVK, MVK_MOLTENVK);
|
ADD_INST_EXT_ENTRY_POINT(vkGetMTLTextureMVK, MVK_MOLTENVK);
|
||||||
|
ADD_INST_EXT_ENTRY_POINT(vkGetMTLBufferMVK, MVK_MOLTENVK);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkUseIOSurfaceMVK, MVK_MOLTENVK);
|
ADD_INST_EXT_ENTRY_POINT(vkUseIOSurfaceMVK, MVK_MOLTENVK);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkGetIOSurfaceMVK, MVK_MOLTENVK);
|
ADD_INST_EXT_ENTRY_POINT(vkGetIOSurfaceMVK, MVK_MOLTENVK);
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "MVKEnvironment.h"
|
#include "MVKEnvironment.h"
|
||||||
#include "MVKSwapchain.h"
|
#include "MVKSwapchain.h"
|
||||||
#include "MVKImage.h"
|
#include "MVKImage.h"
|
||||||
|
#include "MVKBuffer.h"
|
||||||
#include "MVKFoundation.h"
|
#include "MVKFoundation.h"
|
||||||
#include "MVKShaderModule.h"
|
#include "MVKShaderModule.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -133,6 +134,14 @@ MVK_PUBLIC_SYMBOL void vkGetMTLTextureMVK(
|
|||||||
*pMTLTexture = mvkImg->getMTLTexture();
|
*pMTLTexture = mvkImg->getMTLTexture();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MVK_PUBLIC_SYMBOL void vkGetMTLBufferMVK(
|
||||||
|
VkBuffer buffer,
|
||||||
|
id<MTLBuffer>* pMTLBuffer) {
|
||||||
|
|
||||||
|
MVKBuffer* mvkBuffer = (MVKBuffer*)buffer;
|
||||||
|
*pMTLBuffer = mvkBuffer->getMTLBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
MVK_PUBLIC_SYMBOL VkResult vkUseIOSurfaceMVK(
|
MVK_PUBLIC_SYMBOL VkResult vkUseIOSurfaceMVK(
|
||||||
VkImage image,
|
VkImage image,
|
||||||
IOSurfaceRef ioSurface) {
|
IOSurfaceRef ioSurface) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user