diff options
| author | Bastiaan Olij <mux213@gmail.com> | 2023-03-10 21:24:25 +1100 |
|---|---|---|
| committer | Bastiaan Olij <mux213@gmail.com> | 2023-05-09 13:47:22 +1000 |
| commit | c328676d960897abe6f00aaceee4c34801415940 (patch) | |
| tree | e6bcf62a9af43fedd102626363ad3e1324727f53 /servers/rendering/renderer_rd/storage_rd | |
| parent | 6980b2bf1761b9b980920dc5a4d32f240d88e211 (diff) | |
| download | redot-engine-c328676d960897abe6f00aaceee4c34801415940.tar.gz | |
For GDExternal use, provides access to internal graphics handles for textures
Diffstat (limited to 'servers/rendering/renderer_rd/storage_rd')
| -rw-r--r-- | servers/rendering/renderer_rd/storage_rd/texture_storage.cpp | 11 | ||||
| -rw-r--r-- | servers/rendering/renderer_rd/storage_rd/texture_storage.h | 1 |
2 files changed, 12 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(); diff --git a/servers/rendering/renderer_rd/storage_rd/texture_storage.h b/servers/rendering/renderer_rd/storage_rd/texture_storage.h index 3e4ac3b833..8f021f3179 100644 --- a/servers/rendering/renderer_rd/storage_rd/texture_storage.h +++ b/servers/rendering/renderer_rd/storage_rd/texture_storage.h @@ -499,6 +499,7 @@ public: virtual Size2 texture_size_with_proxy(RID p_proxy) override; virtual RID texture_get_rd_texture(RID p_texture, bool p_srgb = false) const override; + virtual uint64_t texture_get_native_handle(RID p_texture, bool p_srgb = false) const override; //internal usage _FORCE_INLINE_ TextureType texture_get_type(RID p_texture) { |
