Revision: 36926
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36926
Author:   psy-fi
Date:     2011-05-26 14:30:46 +0000 (Thu, 26 May 2011)
Log Message:
-----------
a few comments plus a null check

Modified Paths:
--------------
    branches/soc-2011-onion/source/blender/gpu/intern/gpu_draw.c
    branches/soc-2011-onion/source/blender/imbuf/IMB_imbuf.h
    branches/soc-2011-onion/source/blender/imbuf/intern/divers.c

Modified: branches/soc-2011-onion/source/blender/gpu/intern/gpu_draw.c
===================================================================
--- branches/soc-2011-onion/source/blender/gpu/intern/gpu_draw.c        
2011-05-26 13:59:57 UTC (rev 36925)
+++ branches/soc-2011-onion/source/blender/gpu/intern/gpu_draw.c        
2011-05-26 14:30:46 UTC (rev 36926)
@@ -706,10 +706,18 @@
                glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skip_rows);
 
                if (ibuf->rect_float){
+                       /*This case needs a whole new buffer*/
                        if(ibuf->rect==NULL) {
                                IMB_rect_from_float(ibuf);
                        }
             else {
+               /*Do partial drawing. 'buffer' holds only the changed part. 
+               This approach is better since:
+               a)we avoid sending the whole
+               texture to the driver(bandwidth)
+               b)The driver skips some math when uploading the texture.
+               
+               implementation for non-float images will follow*/
                                float *buffer = (float 
*)MEM_mallocN(w*h*sizeof(float)*4, "temp_texpaint_float_buf");
                                IMB_partial_rect_from_float(ibuf, buffer, x, y, 
w, h);
                                glBindTexture(GL_TEXTURE_2D, ima->bindcode);

Modified: branches/soc-2011-onion/source/blender/imbuf/IMB_imbuf.h
===================================================================
--- branches/soc-2011-onion/source/blender/imbuf/IMB_imbuf.h    2011-05-26 
13:59:57 UTC (rev 36925)
+++ branches/soc-2011-onion/source/blender/imbuf/IMB_imbuf.h    2011-05-26 
14:30:46 UTC (rev 36926)
@@ -323,7 +323,8 @@
 
 /*create char buffer, color corrected if necessary, for ImBufs that lack one*/ 
 void IMB_rect_from_float(struct ImBuf *ibuf);
-/*create char buffer for part of the image, color corrected if necessary, for 
ImBufs that lack one*/ 
+/*create char buffer for part of the image, color corrected if necessary, for 
ImBufs that lack one.
+Changed part will be stored in buffer. This is expected to bu used for texure 
painting updates*/ 
 void IMB_partial_rect_from_float(struct ImBuf *ibuf, float *buffer, int x, int 
y, int w, int h);
 void IMB_float_from_rect(struct ImBuf *ibuf);
 void IMB_float_from_rect_simple(struct ImBuf *ibuf); /* no profile conversion 
*/

Modified: branches/soc-2011-onion/source/blender/imbuf/intern/divers.c
===================================================================
--- branches/soc-2011-onion/source/blender/imbuf/intern/divers.c        
2011-05-26 13:59:57 UTC (rev 36925)
+++ branches/soc-2011-onion/source/blender/imbuf/intern/divers.c        
2011-05-26 14:30:46 UTC (rev 36926)
@@ -224,7 +224,9 @@
                if called -only- from GPU_paint_update_image this test will 
never fail
                but leaving it here for better or worse
        */
-       if(init_srcFloatPxl==NULL) return;
+       if(init_srcFloatPxl==NULL || (buffer == NULL)){
+               return;
+       }
        if(init_dstBytePxl==NULL) {
                imb_addrectImBuf(ibuf);
                init_dstBytePxl = (unsigned char *) ibuf->rect;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to