summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-05-09 19:28:26 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-05-09 19:28:26 +0200
commit564d1b34e06bea9d3541fe059f906e98af927cb0 (patch)
tree359d6b3fbf7b113b1d6ac7ee815b0ee52dd8e290 /servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
parentde14109862edd8f8e27fa0f6ec92f5d7f2b9df7f (diff)
parentc328676d960897abe6f00aaceee4c34801415940 (diff)
downloadredot-engine-564d1b34e06bea9d3541fe059f906e98af927cb0.tar.gz
Merge pull request #74711 from BastiaanOlij/add_texture_native_handle
Provide access to internal graphics handles for textures
Diffstat (limited to 'servers/rendering/renderer_rd/storage_rd/texture_storage.cpp')
-rw-r--r--servers/rendering/renderer_rd/storage_rd/texture_storage.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
index 8808d63a82..3d6092a9f6 100644
--- a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
+++ b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
@@ -1442,6 +1442,17 @@ RID TextureStorage::texture_get_rd_texture(RID p_texture, bool p_srgb) const {
return (p_srgb && tex->rd_texture_srgb.is_valid()) ? tex->rd_texture_srgb : tex->rd_texture;
}
+uint64_t TextureStorage::texture_get_native_handle(RID p_texture, bool p_srgb) const {
+ Texture *tex = texture_owner.get_or_null(p_texture);
+ ERR_FAIL_COND_V(!tex, 0);
+
+ if (p_srgb && tex->rd_texture_srgb.is_valid()) {
+ return RD::get_singleton()->texture_native_handle(tex->rd_texture_srgb);
+ } else {
+ return RD::get_singleton()->texture_native_handle(tex->rd_texture);
+ }
+}
+
Ref<Image> TextureStorage::_validate_texture_format(const Ref<Image> &p_image, TextureToRDFormat &r_format) {
Ref<Image> image = p_image->duplicate();