Move D3D12's automatic texture clears to RenderingDevice.

This commit is contained in:
Dario 2025-07-22 11:38:36 -03:00
parent 369afc7b46
commit d17ea061bc
6 changed files with 97 additions and 42 deletions

View file

@ -349,6 +349,7 @@ public:
bool is_resolve_buffer = false;
bool is_discardable = false;
bool has_initial_data = false;
bool pending_clear = false;
BitField<RDD::TextureAspectBits> read_aspect_flags = {};
BitField<RDD::TextureAspectBits> barrier_aspect_flags = {};
@ -401,6 +402,8 @@ public:
void _texture_free_shared_fallback(Texture *p_texture);
void _texture_copy_shared(RID p_src_texture_rid, Texture *p_src_texture, RID p_dst_texture_rid, Texture *p_dst_texture);
void _texture_create_reinterpret_buffer(Texture *p_texture);
void _texture_check_pending_clear(RID p_texture_rid, Texture *p_texture);
void _texture_clear(RID p_texture_rid, Texture *p_texture, const Color &p_color, uint32_t p_base_mipmap, uint32_t p_mipmaps, uint32_t p_base_layer, uint32_t p_layers);
uint32_t _texture_vrs_method_to_usage_bits() const;
struct TextureGetDataRequest {
@ -1139,6 +1142,7 @@ private:
Vector<RDG::ResourceUsage> draw_trackers_usage;
HashMap<RID, RDG::ResourceUsage> untracked_usage;
LocalVector<SharedTexture> shared_textures_to_update;
LocalVector<RID> pending_clear_textures;
InvalidationCallback invalidated_callback = nullptr;
void *invalidated_callback_userdata = nullptr;
};
@ -1146,6 +1150,7 @@ private:
RID_Owner<UniformSet, true> uniform_set_owner;
void _uniform_set_update_shared(UniformSet *p_uniform_set);
void _uniform_set_update_clears(UniformSet *p_uniform_set);
public:
/** Bake a set of uniforms that can be bound at runtime with the given shader.