Cleanup: DRW: Move DRW_SHADER_FREE_SAFE and DRW_UBO_FREE_SAFE to GPU
This commit is contained in:
@@ -84,7 +84,7 @@ ShaderModule::~ShaderModule()
|
||||
}
|
||||
|
||||
for (GPUShader *&shader : shaders_) {
|
||||
DRW_SHADER_FREE_SAFE(shader);
|
||||
GPU_SHADER_FREE_SAFE(shader);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -118,7 +118,7 @@ class Instance {
|
||||
|
||||
~Instance()
|
||||
{
|
||||
DRW_UBO_FREE_SAFE(grid_ubo);
|
||||
GPU_UBO_FREE_SAFE(grid_ubo);
|
||||
}
|
||||
|
||||
void init();
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -33,7 +33,7 @@ class StaticShader : NonCopyable {
|
||||
|
||||
~StaticShader()
|
||||
{
|
||||
DRW_SHADER_FREE_SAFE(shader_);
|
||||
GPU_SHADER_FREE_SAFE(shader_);
|
||||
}
|
||||
|
||||
GPUShader *get()
|
||||
|
||||
@@ -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. */
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user