Decouple TextureStorage from RenderingServer

By moving RS::TextureDetect(Roughness)Callback and RS::TextureInfo
to RenderingServerTypes.
This commit is contained in:
Rémi Verschelde 2026-02-20 00:37:17 +01:00
parent cb9b4cff90
commit 671864fb05
No known key found for this signature in database
GPG key ID: C3336907360768E1
12 changed files with 67 additions and 65 deletions

View file

@ -34,6 +34,7 @@
#include "core/config/project_settings.h"
#include "core/math/geometry_3d.h"
#include "core/os/os.h"
#include "drivers/gles3/effects/cubemap_filter.h"
#include "drivers/gles3/rasterizer_scene_gles3.h"
#include "drivers/gles3/rasterizer_util_gles3.h"

View file

@ -1883,7 +1883,7 @@ String TextureStorage::texture_get_path(RID p_texture) const {
return texture->path;
}
void TextureStorage::texture_set_detect_3d_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) {
void TextureStorage::texture_set_detect_3d_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) {
Texture *texture = texture_owner.get_or_null(p_texture);
ERR_FAIL_NULL(texture);
@ -1891,10 +1891,10 @@ void TextureStorage::texture_set_detect_3d_callback(RID p_texture, RS::TextureDe
texture->detect_3d_callback_ud = p_userdata;
}
void TextureStorage::texture_set_detect_srgb_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) {
void TextureStorage::texture_set_detect_srgb_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) {
}
void TextureStorage::texture_set_detect_normal_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) {
void TextureStorage::texture_set_detect_normal_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) {
Texture *texture = texture_owner.get_or_null(p_texture);
ERR_FAIL_NULL(texture);
@ -1902,7 +1902,7 @@ void TextureStorage::texture_set_detect_normal_callback(RID p_texture, RS::Textu
texture->detect_normal_callback_ud = p_userdata;
}
void TextureStorage::texture_set_detect_roughness_callback(RID p_texture, RS::TextureDetectRoughnessCallback p_callback, void *p_userdata) {
void TextureStorage::texture_set_detect_roughness_callback(RID p_texture, RenderingServerTypes::TextureDetectRoughnessCallback p_callback, void *p_userdata) {
Texture *texture = texture_owner.get_or_null(p_texture);
ERR_FAIL_NULL(texture);
@ -1910,13 +1910,13 @@ void TextureStorage::texture_set_detect_roughness_callback(RID p_texture, RS::Te
texture->detect_roughness_callback_ud = p_userdata;
}
void TextureStorage::texture_debug_usage(List<RS::TextureInfo> *r_info) {
void TextureStorage::texture_debug_usage(List<RenderingServerTypes::TextureInfo> *r_info) {
for (const RID &rid : texture_owner.get_owned_list()) {
Texture *t = texture_owner.get_or_null(rid);
if (!t) {
continue;
}
RS::TextureInfo tinfo;
RenderingServerTypes::TextureInfo tinfo;
tinfo.path = t->path;
tinfo.format = t->format;
tinfo.width = t->alloc_width;

View file

@ -37,8 +37,8 @@
#include "core/templates/rid_owner.h"
#include "drivers/gles3/shaders/canvas_sdf.glsl.gen.h"
#include "drivers/gles3/storage/config.h"
#include "servers/rendering/rendering_server.h"
#include "servers/rendering/rendering_server_enums.h"
#include "servers/rendering/rendering_server_types.h"
#include "servers/rendering/storage/texture_storage.h"
#include "platform_gl.h"
@ -207,13 +207,13 @@ struct Texture {
bool redraw_if_visible = false;
RS::TextureDetectCallback detect_3d_callback = nullptr;
RenderingServerTypes::TextureDetectCallback detect_3d_callback = nullptr;
void *detect_3d_callback_ud = nullptr;
RS::TextureDetectCallback detect_normal_callback = nullptr;
RenderingServerTypes::TextureDetectCallback detect_normal_callback = nullptr;
void *detect_normal_callback_ud = nullptr;
RS::TextureDetectRoughnessCallback detect_roughness_callback = nullptr;
RenderingServerTypes::TextureDetectRoughnessCallback detect_roughness_callback = nullptr;
void *detect_roughness_callback_ud = nullptr;
CanvasTexture *canvas_texture = nullptr;
@ -587,12 +587,12 @@ public:
virtual void texture_set_path(RID p_texture, const String &p_path) override;
virtual String texture_get_path(RID p_texture) const override;
virtual void texture_set_detect_3d_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) override;
void texture_set_detect_srgb_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata);
virtual void texture_set_detect_normal_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_roughness_callback(RID p_texture, RS::TextureDetectRoughnessCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_3d_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) override;
void texture_set_detect_srgb_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata);
virtual void texture_set_detect_normal_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_roughness_callback(RID p_texture, RenderingServerTypes::TextureDetectRoughnessCallback p_callback, void *p_userdata) override;
virtual void texture_debug_usage(List<RS::TextureInfo> *r_info) override;
virtual void texture_debug_usage(List<RenderingServerTypes::TextureInfo> *r_info) override;
virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) override;

View file

@ -428,10 +428,10 @@ Error ServersDebugger::_capture(void *p_user, const String &p_cmd, const Array &
void ServersDebugger::_send_resource_usage() {
ServersDebugger::ResourceUsage usage;
List<RS::TextureInfo> tinfo;
List<RenderingServerTypes::TextureInfo> tinfo;
RS::get_singleton()->texture_debug_usage(&tinfo);
for (const RS::TextureInfo &E : tinfo) {
for (const RenderingServerTypes::TextureInfo &E : tinfo) {
ServersDebugger::ResourceInfo info;
info.path = E.path;
info.vram = E.bytes;

View file

@ -123,11 +123,11 @@ public:
virtual Image::Format texture_get_format(RID p_texture) const override { return Image::FORMAT_MAX; }
virtual void texture_set_detect_3d_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) override {}
virtual void texture_set_detect_normal_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) override {}
virtual void texture_set_detect_roughness_callback(RID p_texture, RS::TextureDetectRoughnessCallback p_callback, void *p_userdata) override {}
virtual void texture_set_detect_3d_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) override {}
virtual void texture_set_detect_normal_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) override {}
virtual void texture_set_detect_roughness_callback(RID p_texture, RenderingServerTypes::TextureDetectRoughnessCallback p_callback, void *p_userdata) override {}
virtual void texture_debug_usage(List<RS::TextureInfo> *r_info) override {}
virtual void texture_debug_usage(List<RenderingServerTypes::TextureInfo> *r_info) override {}
virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) override {}

View file

@ -37,7 +37,6 @@
#include "servers/rendering/renderer_rd/renderer_scene_render_rd.h"
#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
#include "servers/rendering/renderer_rd/storage_rd/render_scene_buffers_rd.h"
#include "servers/rendering/rendering_server.h"
#include "servers/rendering/rendering_server_globals.h"
using namespace RendererRD;
@ -2036,7 +2035,7 @@ Image::Format TextureStorage::texture_get_format(RID p_texture) const {
return tex->format;
}
void TextureStorage::texture_set_detect_3d_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) {
void TextureStorage::texture_set_detect_3d_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) {
Texture *tex = texture_owner.get_or_null(p_texture);
ERR_FAIL_NULL(tex);
@ -2044,7 +2043,7 @@ void TextureStorage::texture_set_detect_3d_callback(RID p_texture, RS::TextureDe
tex->detect_3d_callback = p_callback;
}
void TextureStorage::texture_set_detect_normal_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) {
void TextureStorage::texture_set_detect_normal_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) {
Texture *tex = texture_owner.get_or_null(p_texture);
ERR_FAIL_NULL(tex);
@ -2052,7 +2051,7 @@ void TextureStorage::texture_set_detect_normal_callback(RID p_texture, RS::Textu
tex->detect_normal_callback = p_callback;
}
void TextureStorage::texture_set_detect_roughness_callback(RID p_texture, RS::TextureDetectRoughnessCallback p_callback, void *p_userdata) {
void TextureStorage::texture_set_detect_roughness_callback(RID p_texture, RenderingServerTypes::TextureDetectRoughnessCallback p_callback, void *p_userdata) {
Texture *tex = texture_owner.get_or_null(p_texture);
ERR_FAIL_NULL(tex);
@ -2060,13 +2059,13 @@ void TextureStorage::texture_set_detect_roughness_callback(RID p_texture, RS::Te
tex->detect_roughness_callback = p_callback;
}
void TextureStorage::texture_debug_usage(List<RS::TextureInfo> *r_info) {
void TextureStorage::texture_debug_usage(List<RenderingServerTypes::TextureInfo> *r_info) {
for (const RID &rid : texture_owner.get_owned_list()) {
Texture *t = texture_owner.get_or_null(rid);
if (!t) {
continue;
}
RS::TextureInfo tinfo;
RenderingServerTypes::TextureInfo tinfo;
tinfo.path = t->path;
tinfo.format = t->format;
tinfo.width = t->width;

View file

@ -35,7 +35,7 @@
#include "servers/rendering/renderer_rd/shaders/canvas_sdf.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/tex_blit.glsl.gen.h"
#include "servers/rendering/renderer_rd/storage_rd/forward_id_storage.h"
#include "servers/rendering/rendering_server.h"
#include "servers/rendering/rendering_server_types.h"
#include "servers/rendering/shader_compiler.h"
#include "servers/rendering/storage/texture_storage.h"
#include "servers/rendering/storage/utilities.h"
@ -191,13 +191,13 @@ private:
HashSet<RID> lightmap_users;
RS::TextureDetectCallback detect_3d_callback = nullptr;
RenderingServerTypes::TextureDetectCallback detect_3d_callback = nullptr;
void *detect_3d_callback_ud = nullptr;
RS::TextureDetectCallback detect_normal_callback = nullptr;
RenderingServerTypes::TextureDetectCallback detect_normal_callback = nullptr;
void *detect_normal_callback_ud = nullptr;
RS::TextureDetectRoughnessCallback detect_roughness_callback = nullptr;
RenderingServerTypes::TextureDetectRoughnessCallback detect_roughness_callback = nullptr;
void *detect_roughness_callback_ud = nullptr;
CanvasTexture *canvas_texture = nullptr;
@ -588,11 +588,11 @@ public:
virtual Image::Format texture_get_format(RID p_texture) const override;
virtual void texture_set_detect_3d_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_normal_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_roughness_callback(RID p_texture, RS::TextureDetectRoughnessCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_3d_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_normal_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) override;
virtual void texture_set_detect_roughness_callback(RID p_texture, RenderingServerTypes::TextureDetectRoughnessCallback p_callback, void *p_userdata) override;
virtual void texture_debug_usage(List<RS::TextureInfo> *r_info) override;
virtual void texture_debug_usage(List<RenderingServerTypes::TextureInfo> *r_info) override;
virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) override;

View file

@ -57,10 +57,10 @@ RenderingServer *RenderingServer::create() {
}
Array RenderingServer::_texture_debug_usage_bind() {
List<TextureInfo> list;
List<RenderingServerTypes::TextureInfo> list;
texture_debug_usage(&list);
Array arr;
for (const TextureInfo &E : list) {
for (const RenderingServerTypes::TextureInfo &E : list) {
Dictionary dict;
dict["texture"] = E.texture;
dict["width"] = E.width;

View file

@ -141,26 +141,11 @@ public:
virtual Image::Format texture_get_format(RID p_texture) const = 0;
typedef void (*TextureDetectCallback)(void *);
virtual void texture_set_detect_3d_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_normal_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_roughness_callback(RID p_texture, RenderingServerTypes::TextureDetectRoughnessCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_3d_callback(RID p_texture, TextureDetectCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_normal_callback(RID p_texture, TextureDetectCallback p_callback, void *p_userdata) = 0;
typedef void (*TextureDetectRoughnessCallback)(void *, const String &, RSE::TextureDetectRoughnessChannel);
virtual void texture_set_detect_roughness_callback(RID p_texture, TextureDetectRoughnessCallback p_callback, void *p_userdata) = 0;
struct TextureInfo {
RID texture;
uint32_t width;
uint32_t height;
uint32_t depth;
Image::Format format;
int64_t bytes;
String path;
RSE::TextureType type;
};
virtual void texture_debug_usage(List<TextureInfo> *r_info) = 0;
virtual void texture_debug_usage(List<RenderingServerTypes::TextureInfo> *r_info) = 0;
Array _texture_debug_usage_bind();
virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) = 0;

View file

@ -250,16 +250,16 @@ public:
FUNC2(texture_bind, RID, uint32_t)
#endif
FUNC3(texture_set_detect_3d_callback, RID, TextureDetectCallback, void *)
FUNC3(texture_set_detect_normal_callback, RID, TextureDetectCallback, void *)
FUNC3(texture_set_detect_roughness_callback, RID, TextureDetectRoughnessCallback, void *)
FUNC3(texture_set_detect_3d_callback, RID, RenderingServerTypes::TextureDetectCallback, void *)
FUNC3(texture_set_detect_normal_callback, RID, RenderingServerTypes::TextureDetectCallback, void *)
FUNC3(texture_set_detect_roughness_callback, RID, RenderingServerTypes::TextureDetectRoughnessCallback, void *)
FUNC2(texture_set_path, RID, const String &)
FUNC1RC(String, texture_get_path, RID)
FUNC1RC(Image::Format, texture_get_format, RID)
FUNC1(texture_debug_usage, List<TextureInfo> *)
FUNC1(texture_debug_usage, List<RenderingServerTypes::TextureInfo> *)
FUNC2(texture_set_force_redraw_if_visible, RID, bool)
FUNCRIDTEX2(texture_rd, const RID &, const RSE::TextureLayeredType)

View file

@ -30,6 +30,7 @@
#pragma once
#include "core/io/image.h"
#include "core/math/aabb.h"
#include "core/math/rect2.h"
#include "core/math/rect2i.h"
@ -48,6 +49,22 @@ class Vector;
namespace RenderingServerTypes {
/* TEXTURE API */
typedef void (*TextureDetectCallback)(void *);
typedef void (*TextureDetectRoughnessCallback)(void *, const String &, RSE::TextureDetectRoughnessChannel);
struct TextureInfo {
RID texture;
uint32_t width;
uint32_t height;
uint32_t depth;
Image::Format format;
int64_t bytes;
String path;
RSE::TextureType type;
};
/* SHADER API */
struct ShaderNativeSourceCode {

View file

@ -30,8 +30,8 @@
#pragma once
#include "servers/rendering/rendering_server.h"
#include "servers/rendering/rendering_server_enums.h"
#include "servers/rendering/rendering_server_types.h"
class RendererTextureStorage {
private:
@ -101,11 +101,11 @@ public:
virtual Image::Format texture_get_format(RID p_texture) const = 0;
virtual void texture_set_detect_3d_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_normal_callback(RID p_texture, RS::TextureDetectCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_roughness_callback(RID p_texture, RS::TextureDetectRoughnessCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_3d_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_normal_callback(RID p_texture, RenderingServerTypes::TextureDetectCallback p_callback, void *p_userdata) = 0;
virtual void texture_set_detect_roughness_callback(RID p_texture, RenderingServerTypes::TextureDetectRoughnessCallback p_callback, void *p_userdata) = 0;
virtual void texture_debug_usage(List<RS::TextureInfo> *r_info) = 0;
virtual void texture_debug_usage(List<RenderingServerTypes::TextureInfo> *r_info) = 0;
virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) = 0;