Cleanup: DRW: Move DRW_SHADER_FREE_SAFE and DRW_UBO_FREE_SAFE to GPU

This commit is contained in:
Clément Foucault
2024-12-11 00:43:32 +01:00
parent 9bd1a92778
commit f8da7ecfe1
14 changed files with 52 additions and 52 deletions

View File

@@ -84,7 +84,7 @@ ShaderModule::~ShaderModule()
}
for (GPUShader *&shader : shaders_) {
DRW_SHADER_FREE_SAFE(shader);
GPU_SHADER_FREE_SAFE(shader);
}
}

View File

@@ -428,13 +428,13 @@ GPENCIL_LightPool *gpencil_light_pool_create(GPENCIL_PrivateData *pd, Object * /
void gpencil_material_pool_free(void *storage)
{
GPENCIL_MaterialPool *matpool = (GPENCIL_MaterialPool *)storage;
DRW_UBO_FREE_SAFE(matpool->ubo);
GPU_UBO_FREE_SAFE(matpool->ubo);
}
void gpencil_light_pool_free(void *storage)
{
GPENCIL_LightPool *lightpool = (GPENCIL_LightPool *)storage;
DRW_UBO_FREE_SAFE(lightpool->ubo);
GPU_UBO_FREE_SAFE(lightpool->ubo);
}
/** \} */

View File

@@ -50,22 +50,22 @@ static struct {
void GPENCIL_shader_free()
{
DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[0]);
DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[1]);
DRW_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[2]);
DRW_SHADER_FREE_SAFE(g_shaders.gpencil_sh);
DRW_SHADER_FREE_SAFE(g_shaders.composite_sh);
DRW_SHADER_FREE_SAFE(g_shaders.layer_blend_sh);
DRW_SHADER_FREE_SAFE(g_shaders.depth_merge_sh);
DRW_SHADER_FREE_SAFE(g_shaders.mask_invert_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_composite_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_colorize_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_blur_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_glow_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_pixel_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_rim_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_shadow_sh);
DRW_SHADER_FREE_SAFE(g_shaders.fx_transform_sh);
GPU_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[0]);
GPU_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[1]);
GPU_SHADER_FREE_SAFE(g_shaders.antialiasing_sh[2]);
GPU_SHADER_FREE_SAFE(g_shaders.gpencil_sh);
GPU_SHADER_FREE_SAFE(g_shaders.composite_sh);
GPU_SHADER_FREE_SAFE(g_shaders.layer_blend_sh);
GPU_SHADER_FREE_SAFE(g_shaders.depth_merge_sh);
GPU_SHADER_FREE_SAFE(g_shaders.mask_invert_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_composite_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_colorize_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_blur_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_glow_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_pixel_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_rim_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_shadow_sh);
GPU_SHADER_FREE_SAFE(g_shaders.fx_transform_sh);
}
GPUShader *GPENCIL_shader_antialiasing(int stage)

View File

@@ -22,7 +22,7 @@ class ShaderModule {
struct ShaderDeleter {
void operator()(GPUShader *shader)
{
DRW_SHADER_FREE_SAFE(shader);
GPU_SHADER_FREE_SAFE(shader);
}
};
using ShaderPtr = std::unique_ptr<GPUShader, ShaderDeleter>;

View File

@@ -118,7 +118,7 @@ class Instance {
~Instance()
{
DRW_UBO_FREE_SAFE(grid_ubo);
GPU_UBO_FREE_SAFE(grid_ubo);
}
void init();

View File

@@ -334,7 +334,7 @@ class ShaderModule {
struct ShaderDeleter {
void operator()(GPUShader *shader)
{
DRW_SHADER_FREE_SAFE(shader);
GPU_SHADER_FREE_SAFE(shader);
}
};
using ShaderPtr = std::unique_ptr<GPUShader, ShaderDeleter>;

View File

@@ -70,7 +70,7 @@ static void select_debug_draw_scene(void * /*vedata*/)
static void select_debug_engine_free()
{
DRW_SHADER_FREE_SAFE(e_data.select_debug_sh);
GPU_SHADER_FREE_SAFE(e_data.select_debug_sh);
}
/** \} */

View File

@@ -305,8 +305,8 @@ static void select_engine_free()
SelectEngineData &e_data = get_engine_data();
for (int sh_data_index = 0; sh_data_index < ARRAY_SIZE(e_data.sh_data); sh_data_index++) {
SELECTID_Shaders *sh_data = &e_data.sh_data[sh_data_index];
DRW_SHADER_FREE_SAFE(sh_data->select_id_flat);
DRW_SHADER_FREE_SAFE(sh_data->select_id_uniform);
GPU_SHADER_FREE_SAFE(sh_data->select_id_flat);
GPU_SHADER_FREE_SAFE(sh_data->select_id_uniform);
}
GPU_TEXTURE_FREE_SAFE(e_data.texture_u32);

View File

@@ -33,7 +33,7 @@ class StaticShader : NonCopyable {
~StaticShader()
{
DRW_SHADER_FREE_SAFE(shader_);
GPU_SHADER_FREE_SAFE(shader_);
}
GPUShader *get()

View File

@@ -135,14 +135,6 @@ struct DrawEngineType {
void (*store_metadata)(void *vedata, RenderResult *render_result);
};
#define DRW_UBO_FREE_SAFE(ubo) \
do { \
if (ubo != nullptr) { \
GPU_uniformbuf_free(ubo); \
ubo = nullptr; \
} \
} while (0)
/* Shaders */
void DRW_shader_init();
void DRW_shader_exit();
@@ -166,14 +158,6 @@ GPUMaterial *DRW_shader_from_material(
void *thunk,
GPUMaterialPassReplacementCallbackFn pass_replacement_cb = nullptr);
void DRW_shader_queue_optimize_material(GPUMaterial *mat);
void DRW_shader_free(GPUShader *shader);
#define DRW_SHADER_FREE_SAFE(shader) \
do { \
if (shader != nullptr) { \
DRW_shader_free(shader); \
shader = nullptr; \
} \
} while (0)
/* Viewport. */

View File

@@ -2948,9 +2948,9 @@ void DRW_engines_free()
drw_debug_module_free(DST.debug);
DST.debug = nullptr;
DRW_UBO_FREE_SAFE(G_draw.block_ubo);
DRW_UBO_FREE_SAFE(G_draw.view_ubo);
DRW_UBO_FREE_SAFE(G_draw.clipping_ubo);
GPU_UBO_FREE_SAFE(G_draw.block_ubo);
GPU_UBO_FREE_SAFE(G_draw.view_ubo);
GPU_UBO_FREE_SAFE(G_draw.clipping_ubo);
GPU_TEXTURE_FREE_SAFE(G_draw.ramp);
GPU_TEXTURE_FREE_SAFE(G_draw.weight_ramp);

View File

@@ -105,12 +105,12 @@ GPUShader *DRW_shader_draw_command_generate_get()
void DRW_shaders_free()
{
for (int i = 0; i < PART_REFINE_MAX_SHADER; i++) {
DRW_SHADER_FREE_SAFE(e_data.hair_refine_sh[i]);
GPU_SHADER_FREE_SAFE(e_data.hair_refine_sh[i]);
}
DRW_SHADER_FREE_SAFE(e_data.debug_print_display_sh);
DRW_SHADER_FREE_SAFE(e_data.debug_draw_display_sh);
DRW_SHADER_FREE_SAFE(e_data.draw_visibility_compute_sh);
DRW_SHADER_FREE_SAFE(e_data.draw_view_finalize_sh);
DRW_SHADER_FREE_SAFE(e_data.draw_resource_finalize_sh);
DRW_SHADER_FREE_SAFE(e_data.draw_command_generate_sh);
GPU_SHADER_FREE_SAFE(e_data.debug_print_display_sh);
GPU_SHADER_FREE_SAFE(e_data.debug_draw_display_sh);
GPU_SHADER_FREE_SAFE(e_data.draw_visibility_compute_sh);
GPU_SHADER_FREE_SAFE(e_data.draw_view_finalize_sh);
GPU_SHADER_FREE_SAFE(e_data.draw_resource_finalize_sh);
GPU_SHADER_FREE_SAFE(e_data.draw_command_generate_sh);
}

View File

@@ -419,3 +419,11 @@ int GPU_shader_get_builtin_block(GPUShader *shader, int builtin);
int GPU_shader_get_uniform_block(GPUShader *shader, const char *name);
/** \} */
#define GPU_SHADER_FREE_SAFE(shader) \
do { \
if (shader != nullptr) { \
GPU_shader_free(shader); \
shader = nullptr; \
} \
} while (0)

View File

@@ -52,3 +52,11 @@ void GPU_uniformbuf_clear_to_zero(GPUUniformBuf *ubo);
#define GPU_ATTRIBUTE_UBO_BLOCK_NAME "unf_attrs"
#define GPU_LAYER_ATTRIBUTE_UBO_BLOCK_NAME "drw_layer_attrs"
constexpr static int GPU_NODE_TREE_UBO_SLOT = 0;
#define GPU_UBO_FREE_SAFE(ubo) \
do { \
if (ubo != nullptr) { \
GPU_uniformbuf_free(ubo); \
ubo = nullptr; \
} \
} while (0)