[Bf-blender-cvs] [4aa9888854d] master: PyGPU: make sure the UniformBuffer is padded to 16 bytes

Germano Cavalcante noreply at git.blender.org
Mon Apr 11 21:59:43 CEST 2022


Commit: 4aa9888854d77ae7377aad1faf98f88fc7363b08
Author: Germano Cavalcante
Date:   Mon Apr 11 16:54:05 2022 -0300
Branches: master
https://developer.blender.org/rB4aa9888854d77ae7377aad1faf98f88fc7363b08

PyGPU: make sure the UniformBuffer is padded to 16 bytes

Alignment with `vec4` is a requirement in C++, so it should be a
requirement in Python as well.

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

M	source/blender/python/gpu/gpu_py_uniformbuffer.c

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

diff --git a/source/blender/python/gpu/gpu_py_uniformbuffer.c b/source/blender/python/gpu/gpu_py_uniformbuffer.c
index f5a0af860b4..be3571d4f7c 100644
--- a/source/blender/python/gpu/gpu_py_uniformbuffer.c
+++ b/source/blender/python/gpu/gpu_py_uniformbuffer.c
@@ -78,12 +78,17 @@ static PyObject *pygpu_uniformbuffer__tp_new(PyTypeObject *UNUSED(self),
     return NULL;
   }
 
-  if (GPU_context_active_get()) {
-    ubo = GPU_uniformbuf_create_ex(
-        bpygpu_Buffer_size(pybuffer_obj), pybuffer_obj->buf.as_void, "python_uniformbuffer");
+  if (!GPU_context_active_get()) {
+    STRNCPY(err_out, "No active GPU context found");
   }
   else {
-    STRNCPY(err_out, "No active GPU context found");
+    size_t size = bpygpu_Buffer_size(pybuffer_obj);
+    if ((size % 16) != 0) {
+      STRNCPY(err_out, "UBO is not padded to size of vec4");
+    }
+    else {
+      ubo = GPU_uniformbuf_create_ex(size, pybuffer_obj->buf.as_void, "python_uniformbuffer");
+    }
   }
 
   if (ubo == NULL) {



More information about the Bf-blender-cvs mailing list