[Bf-blender-cvs] [8a2f93b2aba] blender2.8: DRW: Opti: Use less bytes in DRWUniform.

Clément Foucault noreply at git.blender.org
Wed Feb 7 19:12:53 CET 2018


Commit: 8a2f93b2aba76a6c1c065a08d14e414db8cb597e
Author: Clément Foucault
Date:   Wed Feb 7 18:12:35 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB8a2f93b2aba76a6c1c065a08d14e414db8cb597e

DRW: Opti: Use less bytes in DRWUniform.

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

M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 865937018a0..909095b8901 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -177,12 +177,14 @@ typedef enum {
 	DRW_ATTRIB_FLOAT,
 } DRWAttribType;
 
+#define MAX_UNIFORM_DATA_SIZE 16
+
 struct DRWUniform {
 	struct DRWUniform *next;
-	DRWUniformType type;
 	int location;
-	int length;
-	int arraysize;
+	char type; /* DRWUniformType */
+	char length; /* cannot be more than 16 */
+	char arraysize; /* cannot be more than 16 too */
 	const void *value;
 };
 
@@ -692,7 +694,8 @@ static void drw_interface_uniform(DRWShadingGroup *shgroup, const char *name,
 
 	DRWUniform *uni = BLI_mempool_alloc(DST.vmempool->uniforms);
 
-	BLI_assert(arraysize > 0);
+	BLI_assert(arraysize > 0 && arraysize <= 16);
+	BLI_assert(arraysize * length <= MAX_UNIFORM_DATA_SIZE);
 
 	uni->location = location;
 	uni->type = type;



More information about the Bf-blender-cvs mailing list