Metal: Implement texture_create_from_extension
#97304
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements
texture_create_from_extension()
for Metal.The Vulkan device driver implements
texture_create_from_extension()
to handle externally backed textures (OpenXR module, or otherwise), which takes an incomingVkImage
, creates a view, and returns it asTextureID
.godot/drivers/vulkan/rendering_device_driver_vulkan.cpp
Lines 1745 to 1750 in e4e024a
For Metal, there is no exact equivalent to Vulkan's
VkImageView
, so for this driver we only need to cast the incoming handle toid<MTLTexture>
, then return asTextureID
.Parameters
p_type
,p_format
,p_array_layers
,p_depth_stencil
are ignored -MTLTexture
(and the callee) already have this information and is only relevant when reinterpreting or remaping the texture in different ways.The use of
__bridge
withvoid*
in the casting is to signal we are not transferring ownership, and is a safe cast to bridge from C-style memory to Objective-C memory management (but correct me if I'm wrong).loosely related to #96860