[Bf-blender-cvs] [42eda155df3] master: Cleanup: Move draw_manager_data.cc to C++

Hans Goudey noreply at git.blender.org
Fri Sep 30 16:51:12 CEST 2022


Commit: 42eda155df3b77a49c4c1aa3ddcc681e43771111
Author: Hans Goudey
Date:   Fri Sep 30 09:37:43 2022 -0500
Branches: master
https://developer.blender.org/rB42eda155df3b77a49c4c1aa3ddcc681e43771111

Cleanup: Move draw_manager_data.cc to C++

This will help with moving mesh runtime data to C++

===================================================================

M	source/blender/draw/CMakeLists.txt
M	source/blender/draw/intern/draw_instance_data.h
R084	source/blender/draw/intern/draw_manager_data.c	source/blender/draw/intern/draw_manager_data.cc

===================================================================

diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index 1f47496ae82..a9ccc42644a 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -88,7 +88,7 @@ set(SRC
   intern/draw_instance_data.c
   intern/draw_manager.c
   intern/draw_manager.cc
-  intern/draw_manager_data.c
+  intern/draw_manager_data.cc
   intern/draw_manager_exec.c
   intern/draw_manager_profiling.c
   intern/draw_manager_shader.c
diff --git a/source/blender/draw/intern/draw_instance_data.h b/source/blender/draw/intern/draw_instance_data.h
index 9053544d98a..17978938ced 100644
--- a/source/blender/draw/intern/draw_instance_data.h
+++ b/source/blender/draw/intern/draw_instance_data.h
@@ -16,6 +16,10 @@
 
 #define DRW_BUFFER_VERTS_CHUNK 128
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct GHash;
 struct GPUUniformAttrList;
 
@@ -107,3 +111,7 @@ void DRW_uniform_attrs_pool_flush_all(struct GHash *table);
 void DRW_uniform_attrs_pool_clear_all(struct GHash *table);
 struct DRWSparseUniformBuf *DRW_uniform_attrs_pool_find_ubo(struct GHash *table,
                                                             const struct GPUUniformAttrList *key);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.cc
similarity index 84%
rename from source/blender/draw/intern/draw_manager_data.c
rename to source/blender/draw/intern/draw_manager_data.cc
index eb05e03402c..0382ebbd396 100644
--- a/source/blender/draw/intern/draw_manager_data.c
+++ b/source/blender/draw/intern/draw_manager_data.cc
@@ -30,7 +30,7 @@
 #include "DNA_meta_types.h"
 #include "DNA_screen_types.h"
 
-#include "BLI_alloca.h"
+#include "BLI_array.hh"
 #include "BLI_hash.h"
 #include "BLI_link_utils.h"
 #include "BLI_listbase.h"
@@ -102,9 +102,9 @@ void drw_resource_buffer_finish(DRWData *vmempool)
   /* TODO: find a better system. currently a lot of obinfos UBO are going to be unused
    * if not rendering with Eevee. */
 
-  if (vmempool->matrices_ubo == NULL) {
-    vmempool->matrices_ubo = MEM_callocN(list_size, __func__);
-    vmempool->obinfos_ubo = MEM_callocN(list_size, __func__);
+  if (vmempool->matrices_ubo == nullptr) {
+    vmempool->matrices_ubo = static_cast<GPUUniformBuf **>(MEM_callocN(list_size, __func__));
+    vmempool->obinfos_ubo = static_cast<GPUUniformBuf **>(MEM_callocN(list_size, __func__));
     vmempool->ubo_len = ubo_len;
   }
 
@@ -115,8 +115,10 @@ void drw_resource_buffer_finish(DRWData *vmempool)
   }
 
   if (ubo_len != vmempool->ubo_len) {
-    vmempool->matrices_ubo = MEM_recallocN(vmempool->matrices_ubo, list_size);
-    vmempool->obinfos_ubo = MEM_recallocN(vmempool->obinfos_ubo, list_size);
+    vmempool->matrices_ubo = static_cast<GPUUniformBuf **>(
+        MEM_recallocN(vmempool->matrices_ubo, list_size));
+    vmempool->obinfos_ubo = static_cast<GPUUniformBuf **>(
+        MEM_recallocN(vmempool->obinfos_ubo, list_size));
     vmempool->ubo_len = ubo_len;
   }
 
@@ -124,7 +126,7 @@ void drw_resource_buffer_finish(DRWData *vmempool)
   for (int i = 0; i < ubo_len; i++) {
     void *data_obmat = BLI_memblock_elem_get(vmempool->obmats, i, 0);
     void *data_infos = BLI_memblock_elem_get(vmempool->obinfos, i, 0);
-    if (vmempool->matrices_ubo[i] == NULL) {
+    if (vmempool->matrices_ubo[i] == nullptr) {
       vmempool->matrices_ubo[i] = GPU_uniformbuf_create(sizeof(DRWObjectMatrix) *
                                                         DRW_RESOURCE_CHUNK_LEN);
       vmempool->obinfos_ubo[i] = GPU_uniformbuf_create(sizeof(DRWObjectInfos) *
@@ -137,11 +139,12 @@ void drw_resource_buffer_finish(DRWData *vmempool)
   DRW_uniform_attrs_pool_flush_all(vmempool->obattrs_ubo_pool);
 
   /* Aligned alloc to avoid unaligned memcpy. */
-  DRWCommandChunk *chunk_tmp = MEM_mallocN_aligned(sizeof(DRWCommandChunk), 16, "tmp call chunk");
+  DRWCommandChunk *chunk_tmp = static_cast<DRWCommandChunk *>(
+      MEM_mallocN_aligned(sizeof(DRWCommandChunk), 16, __func__));
   DRWCommandChunk *chunk;
   BLI_memblock_iter iter;
   BLI_memblock_iternew(vmempool->commands, &iter);
-  while ((chunk = BLI_memblock_iterstep(&iter))) {
+  while ((chunk = static_cast<DRWCommandChunk *>(BLI_memblock_iterstep(&iter)))) {
     bool sortable = true;
     /* We can only sort chunks that contain #DRWCommandDraw only. */
     for (int i = 0; i < ARRAY_SIZE(chunk->command_type) && sortable; i++) {
@@ -179,7 +182,7 @@ static void drw_shgroup_uniform_create_ex(DRWShadingGroup *shgroup,
   DRWUniformChunk *unichunk = shgroup->uniforms;
   /* Happens on first uniform or if chunk is full. */
   if (!unichunk || unichunk->uniform_used == unichunk->uniform_len) {
-    unichunk = BLI_memblock_alloc(DST.vmempool->uniforms);
+    unichunk = static_cast<DRWUniformChunk *>(BLI_memblock_alloc(DST.vmempool->uniforms));
     unichunk->uniform_len = ARRAY_SIZE(shgroup->uniforms->uniforms);
     unichunk->uniform_used = 0;
     BLI_LINKS_PREPEND(shgroup->uniforms, unichunk);
@@ -243,7 +246,8 @@ static void drw_shgroup_uniform(DRWShadingGroup *shgroup,
                    DRW_UNIFORM_TEXTURE,
                    DRW_UNIFORM_TEXTURE_REF));
   int location = GPU_shader_get_uniform(shgroup->shader, name);
-  drw_shgroup_uniform_create_ex(shgroup, location, type, value, 0, length, arraysize);
+  drw_shgroup_uniform_create_ex(
+      shgroup, location, type, value, GPU_SAMPLER_DEFAULT, length, arraysize);
 }
 
 void DRW_shgroup_uniform_texture_ex(DRWShadingGroup *shgroup,
@@ -251,7 +255,7 @@ void DRW_shgroup_uniform_texture_ex(DRWShadingGroup *shgroup,
                                     const GPUTexture *tex,
                                     eGPUSamplerState sampler_state)
 {
-  BLI_assert(tex != NULL);
+  BLI_assert(tex != nullptr);
   int loc = GPU_shader_get_texture_binding(shgroup->shader, name);
   drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_TEXTURE, tex, sampler_state, 0, 1);
 }
@@ -266,7 +270,7 @@ void DRW_shgroup_uniform_texture_ref_ex(DRWShadingGroup *shgroup,
                                         GPUTexture **tex,
                                         eGPUSamplerState sampler_state)
 {
-  BLI_assert(tex != NULL);
+  BLI_assert(tex != nullptr);
   int loc = GPU_shader_get_texture_binding(shgroup->shader, name);
   drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_TEXTURE_REF, tex, sampler_state, 0, 1);
 }
@@ -278,23 +282,24 @@ void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup, const char *name,
 
 void DRW_shgroup_uniform_image(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
 {
-  BLI_assert(tex != NULL);
+  BLI_assert(tex != nullptr);
   int loc = GPU_shader_get_texture_binding(shgroup->shader, name);
-  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_IMAGE, tex, 0, 0, 1);
+  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_IMAGE, tex, GPU_SAMPLER_DEFAULT, 0, 1);
 }
 
 void DRW_shgroup_uniform_image_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
 {
-  BLI_assert(tex != NULL);
+  BLI_assert(tex != nullptr);
   int loc = GPU_shader_get_texture_binding(shgroup->shader, name);
-  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_IMAGE_REF, tex, 0, 0, 1);
+  drw_shgroup_uniform_create_ex(
+      shgroup, loc, DRW_UNIFORM_IMAGE_REF, tex, GPU_SAMPLER_DEFAULT, 0, 1);
 }
 
 void DRW_shgroup_uniform_block_ex(DRWShadingGroup *shgroup,
                                   const char *name,
                                   const GPUUniformBuf *ubo DRW_DEBUG_FILE_LINE_ARGS)
 {
-  BLI_assert(ubo != NULL);
+  BLI_assert(ubo != nullptr);
   int loc = GPU_shader_get_uniform_block_binding(shgroup->shader, name);
   if (loc == -1) {
 #ifdef DRW_UNUSED_RESOURCE_TRACKING
@@ -308,14 +313,14 @@ void DRW_shgroup_uniform_block_ex(DRWShadingGroup *shgroup,
 #endif
     return;
   }
-  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_BLOCK, ubo, 0, 0, 1);
+  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_BLOCK, ubo, GPU_SAMPLER_DEFAULT, 0, 1);
 }
 
 void DRW_shgroup_uniform_block_ref_ex(DRWShadingGroup *shgroup,
                                       const char *name,
                                       GPUUniformBuf **ubo DRW_DEBUG_FILE_LINE_ARGS)
 {
-  BLI_assert(ubo != NULL);
+  BLI_assert(ubo != nullptr);
   int loc = GPU_shader_get_uniform_block_binding(shgroup->shader, name);
   if (loc == -1) {
 #ifdef DRW_UNUSED_RESOURCE_TRACKING
@@ -329,14 +334,15 @@ void DRW_shgroup_uniform_block_ref_ex(DRWShadingGroup *shgroup,
 #endif
     return;
   }
-  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_BLOCK_REF, ubo, 0, 0, 1);
+  drw_shgroup_uniform_create_ex(
+      shgroup, loc, DRW_UNIFORM_BLOCK_REF, ubo, GPU_SAMPLER_DEFAULT, 0, 1);
 }
 
 void DRW_shgroup_storage_block_ex(DRWShadingGroup *shgroup,
                                   const char *name,
                                   const GPUStorageBuf *ssbo DRW_DEBUG_FILE_LINE_ARGS)
 {
-  BLI_assert(ssbo != NULL);
+  BLI_assert(ssbo != nullptr);
   /* TODO(@fclem): Fix naming inconsistency. */
   int loc = GPU_shader_get_ssbo(shgroup->shader, name);
   if (loc == -1) {
@@ -351,14 +357,15 @@ void DRW_shgroup_storage_block_ex(DRWShadingGroup *shgroup,
 #endif
     return;
   }
-  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_STORAGE_BLOCK, ssbo, 0, 0, 1);
+  drw_shgroup_uniform_create_ex(
+      shgroup, loc, DRW_UNIFORM_STORAGE_BLOCK, ssbo, GPU_SAMPLER_DEFAULT, 0, 1);
 }
 
 void DRW_shgroup_storage_block_ref_ex(DRWShadingGroup *shgroup,
                                       const char *name,
                                       GPUStorageBuf **ssbo DRW_DEBUG_FILE_LINE_ARGS)
 {
-  BLI_assert(ssbo != NULL);
+  BLI_assert(ssbo != nullptr);
   /* TODO(@fclem): Fix naming inconsistency. */
   int loc = GPU_shader_get_ssbo(shgroup->shader, name);
   if (loc == -1) {
@@ -373,7 +380,8 @@ void DRW_shgroup_storage_block_ref_ex(DRWShadingGroup *shgroup,
 #endif
     return;
   }
-  drw_shgroup_uniform_create_ex(shgroup, loc, DRW_UNIFORM_STORAGE_BLOCK_REF, ssbo, 0, 0, 1);
+  drw_shgroup_uniform_create_ex(
+      shgroup, loc, DRW_UNIFORM_STORAGE_BLOCK_REF, ssbo, GPU_SAMPLER_DEFAULT, 0, 1);
 }
 
 void DRW_shgroup_uniform_bool

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list