[Bf-blender-cvs] [40945fc2834] tmp-workbench-rewrite2: matcaps: avoid the extra copy

Miguel Pozo noreply at git.blender.org
Tue Oct 11 22:50:15 CEST 2022


Commit: 40945fc28342cb58d1aa834453b38bdafb93ff8e
Author: Miguel Pozo
Date:   Tue Oct 11 22:50:09 2022 +0200
Branches: tmp-workbench-rewrite2
https://developer.blender.org/rB40945fc28342cb58d1aa834453b38bdafb93ff8e

matcaps: avoid the extra copy

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

M	source/blender/draw/engines/workbench/workbench_engine.cc

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

diff --git a/source/blender/draw/engines/workbench/workbench_engine.cc b/source/blender/draw/engines/workbench/workbench_engine.cc
index 43946f4b498..d1fe5a07b78 100644
--- a/source/blender/draw/engines/workbench/workbench_engine.cc
+++ b/source/blender/draw/engines/workbench/workbench_engine.cc
@@ -139,19 +139,21 @@ class Instance {
           ImBuf *matcap_specular = studio_light->matcap_specular.ibuf;
           if (matcap_diffuse && matcap_diffuse->rect_float) {
             current_matcap = studio_light->name;
-            int size = matcap_diffuse->x * matcap_diffuse->y * 4;
             int layers = 1;
-            Vector<float> load_buffer = {};
-            load_buffer.extend(matcap_diffuse->rect_float, size);
+            float *buffer = matcap_diffuse->rect_float;
+            Vector<float> combined_buffer = {};
             if (matcap_specular && matcap_specular->rect_float) {
-              load_buffer.extend(matcap_specular->rect_float, size);
+              int size = matcap_diffuse->x * matcap_diffuse->y * 4;
+              combined_buffer.extend(matcap_diffuse->rect_float, size);
+              combined_buffer.extend(matcap_specular->rect_float, size);
+              buffer = combined_buffer.begin();
               layers++;
             }
             resources.matcap_tx = Texture(current_matcap.c_str(),
                                           GPU_RGBA16F,
                                           int2(matcap_diffuse->x, matcap_diffuse->y),
                                           layers,
-                                          load_buffer.begin());
+                                          buffer);
           }
         }
       }



More information about the Bf-blender-cvs mailing list