Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions modules/betsy/image_compress_betsy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,37 +86,38 @@ void BetsyCompressor::_init() {

// Create local RD.
RenderingContextDriver *rcd = nullptr;
RenderingDevice *rd = RenderingServer::get_singleton()->create_local_rendering_device();
Ref<RenderingDevice> rd = RenderingServer::get_singleton()->create_local_rendering_device();

if (rd == nullptr) {
if (rd.is_null()) {
#if defined(RD_ENABLED)
#if defined(METAL_ENABLED)
rcd = memnew(RenderingContextDriverMetal);
rd = memnew(RenderingDevice);
rd.instantiate();
#endif
#if defined(VULKAN_ENABLED)
if (rcd == nullptr) {
rcd = memnew(RenderingContextDriverVulkan);
rd = memnew(RenderingDevice);
rd.instantiate();
}
#endif
#endif
if (rcd != nullptr && rd != nullptr) {
if (rcd != nullptr && rd.is_valid()) {
Error err = rcd->initialize();
if (err == OK) {
err = rd->initialize(rcd);
}

if (err != OK) {
memdelete(rd);
//memdelete(rd);
rd.unref();
memdelete(rcd);
rd = nullptr;
rcd = nullptr;
}
}
}

ERR_FAIL_NULL_MSG(rd, "Unable to create a local RenderingDevice.");
ERR_FAIL_COND_MSG(rd.is_null(), "Unable to create a local RenderingDevice.");

compress_rd = rd;
compress_rcd = rcd;
Expand Down Expand Up @@ -246,7 +247,7 @@ void BetsyCompressor::_thread_loop() {
void BetsyCompressor::_thread_exit() {
exit = true;

if (compress_rd != nullptr) {
if (compress_rd.is_valid()) {
if (dxt1_encoding_table_buffer.is_valid()) {
compress_rd->free(dxt1_encoding_table_buffer);
}
Expand All @@ -261,8 +262,9 @@ void BetsyCompressor::_thread_exit() {
}

// Free the RD (and RCD if necessary).
memdelete(compress_rd);
compress_rd = nullptr;
//memdelete(compress_rd);
compress_rd.unref();
//compress_rd = nullptr;
if (compress_rcd != nullptr) {
memdelete(compress_rcd);
compress_rcd = nullptr;
Expand Down Expand Up @@ -363,7 +365,7 @@ Error BetsyCompressor::_compress(BetsyFormat p_format, Image *r_img) {
uint64_t start_time = OS::get_singleton()->get_ticks_msec();

// Return an error so that the compression can fall back to cpu compression
if (compress_rd == nullptr) {
if (compress_rd.is_null()) {
return ERR_CANT_CREATE;
}

Expand Down
2 changes: 1 addition & 1 deletion modules/betsy/image_compress_betsy.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class BetsyCompressor : public Object {
};

// Resources shared by all compression formats.
RenderingDevice *compress_rd = nullptr;
Ref<RenderingDevice> compress_rd;
RenderingContextDriver *compress_rcd = nullptr;
BetsyShader cached_shaders[BETSY_SHADER_MAX];
RID src_sampler;
Expand Down
55 changes: 28 additions & 27 deletions modules/lightmapper_rd/lightmapper_rd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ Lightmapper::BakeError LightmapperRD::_blit_meshes_into_atlas(int p_max_texture_
return BAKE_OK;
}

void LightmapperRD::_create_acceleration_structures(RenderingDevice *rd, Size2i atlas_size, int atlas_slices, AABB &bounds, int grid_size, uint32_t p_cluster_size, Vector<Probe> &p_probe_positions, GenerateProbes p_generate_probes, Vector<int> &slice_triangle_count, Vector<int> &slice_seam_count, RID &vertex_buffer, RID &triangle_buffer, RID &lights_buffer, RID &r_triangle_indices_buffer, RID &r_cluster_indices_buffer, RID &r_cluster_aabbs_buffer, RID &probe_positions_buffer, RID &grid_texture, RID &seams_buffer, BakeStepFunc p_step_function, void *p_bake_userdata) {
void LightmapperRD::_create_acceleration_structures(Ref<RenderingDevice> rd, Size2i atlas_size, int atlas_slices, AABB &bounds, int grid_size, uint32_t p_cluster_size, Vector<Probe> &p_probe_positions, GenerateProbes p_generate_probes, Vector<int> &slice_triangle_count, Vector<int> &slice_seam_count, RID &vertex_buffer, RID &triangle_buffer, RID &lights_buffer, RID &r_triangle_indices_buffer, RID &r_cluster_indices_buffer, RID &r_cluster_aabbs_buffer, RID &probe_positions_buffer, RID &grid_texture, RID &seams_buffer, BakeStepFunc p_step_function, void *p_bake_userdata) {
HashMap<Vertex, uint32_t, VertexHash> vertex_map;

//fill triangles array and vertex array
Expand Down Expand Up @@ -686,7 +686,7 @@ void LightmapperRD::_create_acceleration_structures(RenderingDevice *rd, Size2i
}
}

void LightmapperRD::_raster_geometry(RenderingDevice *rd, Size2i atlas_size, int atlas_slices, int grid_size, AABB bounds, float p_bias, Vector<int> slice_triangle_count, RID position_tex, RID unocclude_tex, RID normal_tex, RID raster_depth_buffer, RID rasterize_shader, RID raster_base_uniform) {
void LightmapperRD::_raster_geometry(Ref<RenderingDevice> rd, Size2i atlas_size, int atlas_slices, int grid_size, AABB bounds, float p_bias, Vector<int> slice_triangle_count, RID position_tex, RID unocclude_tex, RID normal_tex, RID raster_depth_buffer, RID rasterize_shader, RID raster_base_uniform) {
Vector<RID> framebuffers;

for (int i = 0; i < atlas_slices; i++) {
Expand Down Expand Up @@ -780,7 +780,7 @@ static Vector<RD::Uniform> dilate_or_denoise_common_uniforms(RID &p_source_light
return uniforms;
}

LightmapperRD::BakeError LightmapperRD::_dilate(RenderingDevice *rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices) {
LightmapperRD::BakeError LightmapperRD::_dilate(Ref<RenderingDevice> rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices) {
Vector<RD::Uniform> uniforms = dilate_or_denoise_common_uniforms(source_light_tex, dest_light_tex);

RID compute_shader_dilate = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("dilate"));
Expand Down Expand Up @@ -817,7 +817,7 @@ LightmapperRD::BakeError LightmapperRD::_dilate(RenderingDevice *rd, Ref<RDShade
return BAKE_OK;
}

LightmapperRD::BakeError LightmapperRD::_pack_l1(RenderingDevice *rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices) {
LightmapperRD::BakeError LightmapperRD::_pack_l1(Ref<RenderingDevice> rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices) {
Vector<RD::Uniform> uniforms = dilate_or_denoise_common_uniforms(source_light_tex, dest_light_tex);

RID compute_shader_pack = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("pack_coeffs"));
Expand Down Expand Up @@ -846,7 +846,7 @@ LightmapperRD::BakeError LightmapperRD::_pack_l1(RenderingDevice *rd, Ref<RDShad
return BAKE_OK;
}

Error LightmapperRD::_store_pfm(RenderingDevice *p_rd, RID p_atlas_tex, int p_index, const Size2i &p_atlas_size, const String &p_name, bool p_shadowmask) {
Error LightmapperRD::_store_pfm(Ref<RenderingDevice> p_rd, RID p_atlas_tex, int p_index, const Size2i &p_atlas_size, const String &p_name, bool p_shadowmask) {
Vector<uint8_t> data = p_rd->texture_get_data(p_atlas_tex, p_index);
Ref<Image> img = Image::create_from_data(p_atlas_size.width, p_atlas_size.height, false, p_shadowmask ? Image::FORMAT_RGBA8 : Image::FORMAT_RGBAH, data);
img->convert(Image::FORMAT_RGBF);
Expand Down Expand Up @@ -905,7 +905,7 @@ Ref<Image> LightmapperRD::_read_pfm(const String &p_name, bool p_shadowmask) {
return img;
}

LightmapperRD::BakeError LightmapperRD::_denoise_oidn(RenderingDevice *p_rd, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, bool p_shadowmask, const String &p_exe) {
LightmapperRD::BakeError LightmapperRD::_denoise_oidn(Ref<RenderingDevice> p_rd, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, bool p_shadowmask, const String &p_exe) {
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);

for (int i = 0; i < p_atlas_slices; i++) {
Expand Down Expand Up @@ -971,7 +971,7 @@ LightmapperRD::BakeError LightmapperRD::_denoise_oidn(RenderingDevice *p_rd, RID
return BAKE_OK;
}

LightmapperRD::BakeError LightmapperRD::_denoise(RenderingDevice *p_rd, Ref<RDShaderFile> &p_compute_shader, const RID &p_compute_base_uniform_set, PushConstant &p_push_constant, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, RID p_unocclude_tex, float p_denoiser_strength, int p_denoiser_range, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, BakeStepFunc p_step_function, void *p_bake_userdata) {
LightmapperRD::BakeError LightmapperRD::_denoise(Ref<RenderingDevice> p_rd, Ref<RDShaderFile> &p_compute_shader, const RID &p_compute_base_uniform_set, PushConstant &p_push_constant, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, RID p_unocclude_tex, float p_denoiser_strength, int p_denoiser_range, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, BakeStepFunc p_step_function, void *p_bake_userdata) {
RID denoise_params_buffer = p_rd->uniform_buffer_create(sizeof(DenoiseParams));
DenoiseParams denoise_params;
denoise_params.spatial_bandwidth = 5.0f;
Expand Down Expand Up @@ -1123,36 +1123,37 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
// a local rendering device manually depending on the current platform.
Error err;
RenderingContextDriver *rcd = nullptr;
RenderingDevice *rd = RenderingServer::get_singleton()->create_local_rendering_device();
if (rd == nullptr) {
Ref<RenderingDevice> rd = RenderingServer::get_singleton()->create_local_rendering_device();
if (rd.is_null()) {
#if defined(RD_ENABLED)
#if defined(METAL_ENABLED)
rcd = memnew(RenderingContextDriverMetal);
rd = memnew(RenderingDevice);
rd.instantiate();
#endif
#if defined(VULKAN_ENABLED)
if (rcd == nullptr) {
rcd = memnew(RenderingContextDriverVulkan);
rd = memnew(RenderingDevice);
rd.instantiate();
}
#endif
#endif
if (rcd != nullptr && rd != nullptr) {
if (rcd != nullptr && rd.is_valid()) {
err = rcd->initialize();
if (err == OK) {
err = rd->initialize(rcd);
}

if (err != OK) {
memdelete(rd);
//rd.unref();
rd.unref();
memdelete(rcd);
rd = nullptr;
rcd = nullptr;
}
}
}

ERR_FAIL_NULL_V(rd, BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);
ERR_FAIL_COND_V(rd.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);

RID albedo_array_tex;
RID emission_array_tex;
Expand Down Expand Up @@ -1365,7 +1366,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
if (p_step_function(0.47, RTR("Preparing shaders"), p_bake_userdata, true)) {
FREE_TEXTURES
FREE_BUFFERS
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand All @@ -1383,7 +1384,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_TEXTURES
FREE_BUFFERS

memdelete(rd);
rd.unref();

if (rcd != nullptr) {
memdelete(rcd);
Expand Down Expand Up @@ -1564,7 +1565,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_TEXTURES
FREE_BUFFERS
FREE_RASTER_RESOURCES
memdelete(rd);
rd.unref();

if (rcd != nullptr) {
memdelete(rcd);
Expand Down Expand Up @@ -1612,7 +1613,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_BUFFERS
FREE_RASTER_RESOURCES
FREE_COMPUTE_RESOURCES
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -1673,7 +1674,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_BUFFERS
FREE_RASTER_RESOURCES
FREE_COMPUTE_RESOURCES
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -1790,7 +1791,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_BUFFERS
FREE_RASTER_RESOURCES
FREE_COMPUTE_RESOURCES
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -1881,7 +1882,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_BUFFERS
FREE_RASTER_RESOURCES
FREE_COMPUTE_RESOURCES
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -1930,7 +1931,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_BUFFERS
FREE_RASTER_RESOURCES
FREE_COMPUTE_RESOURCES
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -1959,7 +1960,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
if (probe_positions.size() > 0) {
rd->free(light_probe_buffer);
}
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -2040,7 +2041,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
if (probe_positions.size() > 0) {
rd->free(light_probe_buffer);
}
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -2075,7 +2076,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
if (probe_positions.size() > 0) {
rd->free(light_probe_buffer);
}
memdelete(rd);
rd.unref();
if (rcd != nullptr) {
memdelete(rcd);
}
Expand Down Expand Up @@ -2151,7 +2152,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_BUFFERS
FREE_RASTER_RESOURCES
FREE_COMPUTE_RESOURCES
memdelete(rd);
rd.unref();

if (rcd != nullptr) {
memdelete(rcd);
Expand Down Expand Up @@ -2347,7 +2348,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
FREE_COMPUTE_RESOURCES
FREE_BLENDSEAMS_RESOURCES

memdelete(rd);
rd.unref();

if (rcd != nullptr) {
memdelete(rcd);
Expand Down
14 changes: 7 additions & 7 deletions modules/lightmapper_rd/lightmapper_rd.h
Original file line number Diff line number Diff line change
Expand Up @@ -285,16 +285,16 @@ class LightmapperRD : public Lightmapper {
};

BakeError _blit_meshes_into_atlas(int p_max_texture_size, int p_denoiser_range, Vector<Ref<Image>> &albedo_images, Vector<Ref<Image>> &emission_images, AABB &bounds, Size2i &atlas_size, int &atlas_slices, float p_supersampling_factor, BakeStepFunc p_step_function, void *p_bake_userdata);
void _create_acceleration_structures(RenderingDevice *rd, Size2i atlas_size, int atlas_slices, AABB &bounds, int grid_size, uint32_t p_cluster_size, Vector<Probe> &probe_positions, GenerateProbes p_generate_probes, Vector<int> &slice_triangle_count, Vector<int> &slice_seam_count, RID &vertex_buffer, RID &triangle_buffer, RID &lights_buffer, RID &r_triangle_indices_buffer, RID &r_cluster_indices_buffer, RID &r_cluster_aabbs_buffer, RID &probe_positions_buffer, RID &grid_texture, RID &seams_buffer, BakeStepFunc p_step_function, void *p_bake_userdata);
void _raster_geometry(RenderingDevice *rd, Size2i atlas_size, int atlas_slices, int grid_size, AABB bounds, float p_bias, Vector<int> slice_triangle_count, RID position_tex, RID unocclude_tex, RID normal_tex, RID raster_depth_buffer, RID rasterize_shader, RID raster_base_uniform);
void _create_acceleration_structures(Ref<RenderingDevice> rd, Size2i atlas_size, int atlas_slices, AABB &bounds, int grid_size, uint32_t p_cluster_size, Vector<Probe> &probe_positions, GenerateProbes p_generate_probes, Vector<int> &slice_triangle_count, Vector<int> &slice_seam_count, RID &vertex_buffer, RID &triangle_buffer, RID &lights_buffer, RID &r_triangle_indices_buffer, RID &r_cluster_indices_buffer, RID &r_cluster_aabbs_buffer, RID &probe_positions_buffer, RID &grid_texture, RID &seams_buffer, BakeStepFunc p_step_function, void *p_bake_userdata);
void _raster_geometry(Ref<RenderingDevice> rd, Size2i atlas_size, int atlas_slices, int grid_size, AABB bounds, float p_bias, Vector<int> slice_triangle_count, RID position_tex, RID unocclude_tex, RID normal_tex, RID raster_depth_buffer, RID rasterize_shader, RID raster_base_uniform);

BakeError _dilate(RenderingDevice *rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices);
BakeError _denoise(RenderingDevice *p_rd, Ref<RDShaderFile> &p_compute_shader, const RID &p_compute_base_uniform_set, PushConstant &p_push_constant, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, RID p_unocclude_tex, float p_denoiser_strength, int p_denoiser_range, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, BakeStepFunc p_step_function, void *p_bake_userdata);
BakeError _pack_l1(RenderingDevice *rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices);
BakeError _dilate(Ref<RenderingDevice> rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices);
BakeError _denoise(Ref<RenderingDevice> p_rd, Ref<RDShaderFile> &p_compute_shader, const RID &p_compute_base_uniform_set, PushConstant &p_push_constant, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, RID p_unocclude_tex, float p_denoiser_strength, int p_denoiser_range, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, BakeStepFunc p_step_function, void *p_bake_userdata);
BakeError _pack_l1(Ref<RenderingDevice> rd, Ref<RDShaderFile> &compute_shader, RID &compute_base_uniform_set, PushConstant &push_constant, RID &source_light_tex, RID &dest_light_tex, const Size2i &atlas_size, int atlas_slices);

Error _store_pfm(RenderingDevice *p_rd, RID p_atlas_tex, int p_index, const Size2i &p_atlas_size, const String &p_name, bool p_shadowmask);
Error _store_pfm(Ref<RenderingDevice> p_rd, RID p_atlas_tex, int p_index, const Size2i &p_atlas_size, const String &p_name, bool p_shadowmask);
Ref<Image> _read_pfm(const String &p_name, bool p_shadowmask);
BakeError _denoise_oidn(RenderingDevice *p_rd, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, bool p_shadowmask, const String &p_exe);
BakeError _denoise_oidn(Ref<RenderingDevice> p_rd, RID p_source_light_tex, RID p_source_normal_tex, RID p_dest_light_tex, const Size2i &p_atlas_size, int p_atlas_slices, bool p_bake_sh, bool p_shadowmask, const String &p_exe);

public:
virtual void add_mesh(const MeshData &p_mesh) override;
Expand Down
7 changes: 4 additions & 3 deletions servers/rendering/rendering_device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7312,10 +7312,11 @@ void RenderingDevice::_set_max_fps(int p_max_fps) {
}
}

RenderingDevice *RenderingDevice::create_local_device() {
RenderingDevice *rd = memnew(RenderingDevice);
Ref<RenderingDevice> RenderingDevice::create_local_device() {
Ref<RenderingDevice> rd;
rd.instantiate();
if (rd->initialize(context) != OK) {
memdelete(rd);
rd.unref();
return nullptr;
}
return rd;
Expand Down
4 changes: 2 additions & 2 deletions servers/rendering/rendering_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class RDFramebufferPass;
class RDPipelineSpecializationConstant;

class RenderingDevice : public RenderingDeviceCommons {
GDCLASS(RenderingDevice, Object)
GDCLASS(RenderingDevice, RefCounted)

_THREAD_SAFE_CLASS_

Expand Down Expand Up @@ -1636,7 +1636,7 @@ class RenderingDevice : public RenderingDeviceCommons {

uint64_t get_memory_usage(MemoryType p_type) const;

RenderingDevice *create_local_device();
Ref<RenderingDevice> create_local_device();

void set_resource_name(RID p_id, const String &p_name);

Expand Down
3 changes: 2 additions & 1 deletion servers/rendering/rendering_device_commons.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#pragma once

#include "core/object/object.h"
#include "core/object/ref_counted.h"
#include "core/variant/type_info.h"

#include <algorithm>
Expand Down Expand Up @@ -66,7 +67,7 @@ class VectorView {
_ptr(p_lv.ptr()), _size(p_lv.size()) {}
};

class RenderingDeviceCommons : public Object {
class RenderingDeviceCommons : public RefCounted {
////////////////////////////////////////////
// PUBLIC STUFF
// Exposed by RenderingDevice, and shared
Expand Down
2 changes: 1 addition & 1 deletion servers/rendering_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1891,7 +1891,7 @@ RenderingDevice *RenderingServer::get_rendering_device() const {
return RenderingDevice::get_singleton();
}

RenderingDevice *RenderingServer::create_local_rendering_device() const {
Ref<RenderingDevice> RenderingServer::create_local_rendering_device() {
RenderingDevice *device = RenderingDevice::get_singleton();
if (!device) {
return nullptr;
Expand Down
Loading
Loading