[Bf-blender-cvs] [122d0c8f4ba] master: Cleanup: ClipDraw: Use GPUTexture api and fix a vmem leak

Clément Foucault noreply at git.blender.org
Sat Jul 18 03:08:15 CEST 2020


Commit: 122d0c8f4bab5e1df22131a8bd6f025c19ed4925
Author: Clément Foucault
Date:   Fri Jul 17 03:21:54 2020 +0200
Branches: master
https://developer.blender.org/rB122d0c8f4bab5e1df22131a8bd6f025c19ed4925

Cleanup: ClipDraw: Use GPUTexture api and fix a vmem leak

Leak was silent as it was an opengl handle.

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

M	source/blender/editors/space_clip/clip_draw.c

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

diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c
index 7f85d0db930..d33f624063a 100644
--- a/source/blender/editors/space_clip/clip_draw.c
+++ b/source/blender/editors/space_clip/clip_draw.c
@@ -1201,7 +1201,6 @@ static void draw_plane_marker_image(Scene *scene,
     }
 
     if (display_buffer) {
-      GLuint texid;
       float frame_corners[4][2] = {{0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f}};
       float perspective_matrix[3][3];
       float gl_matrix[4][4];
@@ -1218,23 +1217,17 @@ static void draw_plane_marker_image(Scene *scene,
             GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA);
       }
 
-      glGenTextures(1, (GLuint *)&texid);
-
-      glActiveTexture(GL_TEXTURE0);
-      glBindTexture(GL_TEXTURE_2D, texid);
-
-      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
-      glTexImage2D(GL_TEXTURE_2D,
-                   0,
-                   GL_RGBA8,
-                   ibuf->x,
-                   ibuf->y,
-                   0,
-                   GL_RGBA,
-                   GL_UNSIGNED_BYTE,
-                   display_buffer);
+      GPUTexture *texture = GPU_texture_create_nD(ibuf->x,
+                                                  ibuf->y,
+                                                  0,
+                                                  2,
+                                                  display_buffer,
+                                                  GPU_RGBA8,
+                                                  GPU_DATA_UNSIGNED_BYTE,
+                                                  0,
+                                                  false,
+                                                  NULL);
+      GPU_texture_filter_mode(texture, false);
 
       GPU_matrix_push();
       GPU_matrix_mul(gl_matrix);
@@ -1246,7 +1239,7 @@ static void draw_plane_marker_image(Scene *scene,
 
       immBindBuiltinProgram(GPU_SHADER_2D_IMAGE_COLOR);
 
-      immUniform1i("image", 0);
+      immBindTexture("image", texture);
       immUniformColor4f(1.0f, 1.0f, 1.0f, plane_track->image_opacity);
 
       immBegin(GPU_PRIM_TRI_FAN, 4);
@@ -1269,7 +1262,8 @@ static void draw_plane_marker_image(Scene *scene,
 
       GPU_matrix_pop();
 
-      glBindTexture(GL_TEXTURE_2D, 0);
+      GPU_texture_unbind(texture);
+      GPU_texture_free(texture);
 
       if (transparent) {
         GPU_blend(false);



More information about the Bf-blender-cvs mailing list