[Bf-blender-cvs] [0fd93cc] framebuffer: gpu python api: move offscreen functions to their own file

Dalai Felinto noreply at git.blender.org
Tue Sep 29 19:56:32 CEST 2015


Commit: 0fd93cc12836bd32a9f18757ce947d3253417dd4
Author: Dalai Felinto
Date:   Tue Sep 29 12:30:16 2015 -0300
Branches: framebuffer
https://developer.blender.org/rB0fd93cc12836bd32a9f18757ce947d3253417dd4

gpu python api: move offscreen functions to their own file

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

M	source/blender/python/intern/CMakeLists.txt
M	source/blender/python/intern/gpu.c
M	source/blender/python/intern/gpu.h
A	source/blender/python/intern/gpu_offscreen.c

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

diff --git a/source/blender/python/intern/CMakeLists.txt b/source/blender/python/intern/CMakeLists.txt
index cd2a9fd..f04bca7 100644
--- a/source/blender/python/intern/CMakeLists.txt
+++ b/source/blender/python/intern/CMakeLists.txt
@@ -46,6 +46,7 @@ set(INC_SYS
 
 set(SRC
 	gpu.c
+	gpu_offscreen.c
 	bpy.c
 	bpy_app.c
 	bpy_app_build_options.c
diff --git a/source/blender/python/intern/gpu.c b/source/blender/python/intern/gpu.c
index c0c4687..b11922c 100644
--- a/source/blender/python/intern/gpu.c
+++ b/source/blender/python/intern/gpu.c
@@ -53,7 +53,6 @@
 
 #include "../generic/py_capi_utils.h"
 
-#include "GPU_extensions.h"
 #include "GPU_material.h"
 
 #include "gpu.h"
@@ -315,246 +314,6 @@ static PyMethodDef meth_export_shader[] = {
 };
 
 /* -------------------------------------------------------------------- */
-/* GPU Offscreen PyObject */
-
-/* annoying since arg parsing won't check overflow */
-#define UINT_IS_NEG(n) ((n) > INT_MAX)
-
-typedef struct {
-	PyObject_HEAD
-	GPUOffScreen *ofs;
-} PyGPUOffscreen;
-
-PyDoc_STRVAR(GPUOffscreen_width_doc, "Texture width.\n\n:type: GLsizei");
-static PyObject *GPUOffscreen_width_get(PyGPUOffscreen *self, void *UNUSED(type))
-{
-	return PyLong_FromLong(GPU_offscreen_width(self->ofs));
-}
-
-PyDoc_STRVAR(GPUOffscreen_height_doc, "Texture height.\n\n:type: GLsizei");
-static PyObject *GPUOffscreen_height_get(PyGPUOffscreen *self, void *UNUSED(type))
-{
-	return PyLong_FromLong(GPU_offscreen_height(self->ofs));
-}
-
-PyDoc_STRVAR(GPUOffscreen_framebuffer_object_doc, "Framebuffer object.\n\n:type: GLuint");
-static PyObject *GPUOffscreen_framebuffer_object_get(PyGPUOffscreen *self, void *UNUSED(type))
-{
-	return PyLong_FromLong(GPU_offscreen_fb_object(self->ofs));
-}
-
-PyDoc_STRVAR(GPUOffscreen_color_object_doc, "Color object.\n\n:type: GLuint");
-static PyObject *GPUOffscreen_color_object_get(PyGPUOffscreen *self, void *UNUSED(type))
-{
-	return PyLong_FromLong(GPU_offscreen_color_object(self->ofs));
-}
-
-static PyGetSetDef GPUOffscreen_getseters[] = {
-	{(char *)"color_object", (getter)GPUOffscreen_color_object_get, (setter)NULL, GPUOffscreen_color_object_doc, NULL},
-	{(char *)"framebuffer_object", (getter)GPUOffscreen_framebuffer_object_get, (setter)NULL, GPUOffscreen_framebuffer_object_doc, NULL},
-	{(char *)"width", (getter)GPUOffscreen_width_get, (setter)NULL, GPUOffscreen_width_doc, NULL},
-	{(char *)"height", (getter)GPUOffscreen_height_get, (setter)NULL, GPUOffscreen_height_doc, NULL},
-	{NULL, NULL, NULL, NULL, NULL}  /* Sentinel */
-};
-
-static int PyGPUOffscreen__tp_init(PyGPUOffscreen *self, PyObject *args, PyObject *kwargs)
-{
-	unsigned int width, height;
-	const char *keywords[] = {"width", "height",  NULL};
-	char err_out[256];
-
-	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:GPUOffscreen", (char **)keywords, &width, &height)) {
-		return -1;
-	}
-
-	if (UINT_IS_NEG(width)) {
-		PyErr_SetString(PyExc_ValueError, "negative 'width' given");
-		return -1;
-	}
-
-	if (UINT_IS_NEG(height)) {
-		PyErr_SetString(PyExc_ValueError, "negative 'height' given");
-		return -1;
-	}
-
-	self->ofs = GPU_offscreen_create(width, height, err_out);
-	return 0;
-}
-
-static void PyGPUOffscreen__tp_dealloc(PyGPUOffscreen *self)
-{
-	if (self->ofs)
-		GPU_offscreen_free(self->ofs);
-	Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-PyDoc_STRVAR(py_GPUOffscreen_doc,
-"GPUOffscreen(width, height) -> new GPU Offscreen object"
-"initialized to hold a framebuffer object of ``width`` x ``height``.\n"
-""
-);
-PyTypeObject PyGPUOffscreen_Type = {
-	PyVarObject_HEAD_INIT(NULL, 0)
-	"GPUOffscreen",                              /* tp_name */
-	sizeof(PyGPUOffscreen),                      /* tp_basicsize */
-	0,                                           /* tp_itemsize */
-	/* methods */
-	(destructor)PyGPUOffscreen__tp_dealloc,      /* tp_dealloc */
-	NULL,                                        /* tp_print */
-	NULL,                                        /* tp_getattr */
-	NULL,                                        /* tp_setattr */
-	NULL,                                        /* tp_compare */
-	NULL,                                        /* tp_repr */
-	NULL,                                        /* tp_as_number */
-	NULL,                                        /* tp_as_sequence */
-	NULL,                                        /* tp_as_mapping */
-	NULL,                                        /* tp_hash */
-	NULL,                                        /* tp_call */
-	NULL,                                        /* tp_str */
-	NULL,                                        /* tp_getattro */
-	NULL,                                        /* tp_setattro */
-	NULL,                                        /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,                          /* tp_flags */
-	py_GPUOffscreen_doc,                         /* Documentation string */
-	NULL,                                        /* tp_traverse */
-	NULL,                                        /* tp_clear */
-	NULL,                                        /* tp_richcompare */
-	0,                                           /* tp_weaklistoffset */
-	NULL,                                        /* tp_iter */
-	NULL,                                        /* tp_iternext */
-	NULL,                                        /* tp_methods */
-	NULL,                                        /* tp_members */
-	GPUOffscreen_getseters,                      /* tp_getset */
-	NULL,                                        /* tp_base */
-	NULL,                                        /* tp_dict */
-	NULL,                                        /* tp_descr_get */
-	NULL,                                        /* tp_descr_set */
-	0,                                           /* tp_dictoffset */
-	(initproc)PyGPUOffscreen__tp_init,           /* tp_init */
-	(allocfunc)PyType_GenericAlloc,              /* tp_alloc */
-	(newfunc)PyType_GenericNew,                  /* tp_new */
-	(freefunc)0,                                 /* tp_free */
-	NULL,                                        /* tp_is_gc */
-	NULL,                                        /* tp_bases */
-	NULL,                                        /* tp_mro */
-	NULL,                                        /* tp_cache */
-	NULL,                                        /* tp_subclasses */
-	NULL,                                        /* tp_weaklist */
-	(destructor) NULL                            /* tp_del */
-};
-
-/* -------------------------------------------------------------------- */
-/* GPU offscreen methods */
-
-PyDoc_STRVAR(GPU_offscreen_object_bind_doc,
-"offscreen_object_bind(offscreen_object, use_save)\n"
-"\n"
-"   Bind an offscreen object.\n"
-"\n"
-"   :param offscreen_object: offscreen object\n"
-"   :type offscreen_object: :class:`gpu.OffScreenObject`\n"
-"   :param use_save: save OpenGL current states\n"
-"   :type use_save: bool"
-);
-static PyObject *GPU_offscreen_object_bind(PyObject *UNUSED(self), PyObject *args, PyObject *kwds)
-{
-	PyGPUOffscreen *PyOfs;
-	int use_save;
-
-	static const char *kwlist[] = {"offscreen_object", "use_save", NULL};
-
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oi:offscreen_object_bind", (char **)(kwlist), &PyOfs, &use_save))
-		return NULL;
-
-	GPU_offscreen_bind(PyOfs->ofs, use_save);
-	Py_RETURN_NONE;
-}
-
-static PyMethodDef meth_offscreen_object_bind[] = {
-	{"offscreen_object_bind", (PyCFunction)GPU_offscreen_object_bind, METH_VARARGS | METH_KEYWORDS, GPU_offscreen_object_bind_doc}
-};
-
-PyDoc_STRVAR(GPU_offscreen_object_create_doc,
-"offscreen_object_create(width, height)\n"
-"\n"
-"   Return a GPUOffScreen.\n"
-"\n"
-"   :return: struct with GPUFrameBuffer, GPUTexture, GPUTexture.\n"
-"   :rtype: :class:`gpu.OffScreenObject`"
-);
-static PyObject *GPU_offscreen_object_create(PyObject *UNUSED(self), PyObject *args, PyObject *kwds)
-{
-	int width;
-	int height;
-
-	static const char *kwlist[] = {"width", "height", NULL};
-
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "ii:offscreen_object_create", (char **)(kwlist), &width, &height))
-		return NULL;
-
-	return PyObject_CallObject((PyObject *) &PyGPUOffscreen_Type, args);
-}
-
-static PyMethodDef meth_offscreen_object_create[] = {
-	{"offscreen_object_create", (PyCFunction)GPU_offscreen_object_create, METH_VARARGS | METH_KEYWORDS, GPU_offscreen_object_create_doc}
-};
-
-PyDoc_STRVAR(GPU_offscreen_object_free_doc,
-"offscreen_object_free(offscreen_object)\n"
-"\n"
-"   Free an offscreen object\n"
-"   The framebuffer, texture and render objects will no longer be accessible.\n"
-"\n"
-"   :param offscreen_object: offscreen object\n"
-"   :type offscreen_object: :class:`gpu.OffScreenObject`"
-);
-static PyObject *GPU_offscreen_object_free(PyObject *UNUSED(self), PyObject *args, PyObject *kwds)
-{
-	PyGPUOffscreen *PyOfs;
-
-	static const char *kwlist[] = {"offscreen_object", NULL};
-
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:offscreen_object_unbind", (char **)(kwlist), &PyOfs))
-		return NULL;
-
-	GPU_offscreen_free(PyOfs->ofs);
-	PyOfs->ofs = NULL;
-	Py_RETURN_NONE;
-}
-
-static PyMethodDef meth_offscreen_object_free[] = {
-	{"offscreen_object_free", (PyCFunction)GPU_offscreen_object_free, METH_VARARGS | METH_KEYWORDS, GPU_offscreen_object_free_doc}
-};
-
-PyDoc_STRVAR(GPU_offscreen_object_unbind_doc,
-"offscreen_object_unbind(offscreen_object, use_restore)\n"
-"\n"
-"   Unbind an offscreen object.\n"
-"\n"
-"   :param offscreen_object: offscreen object\n"
-"   :type offscreen_object: :class:`gpu.OffScreenObject`\n"
-"   :param use_restore: restore OpenGL previous states\n"
-"   :type use_restore: bool"
-);
-static PyObject *GPU_offscreen_object_unbind(PyObject *UNUSED(self), PyObject *args, PyObject *kwds)
-{
-	PyGPUOffscreen *PyOfs;
-	int use_restore;
-
-	static const char *kwlist[] = {"offscreen_object", "use_restore", NULL};
-
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oi:offscreen_object_unbind", (char **)(kwlist), &PyOfs, &use_restore))
-		return NULL;
-
-	GPU_offscreen_unbind(PyOfs->ofs, use_restore);
-	Py_RETURN_NONE;
-}
-
-static PyMethodDef meth_offscreen_object_unbind[] = {
-	{"offscreen_object_unbind", (PyCFunction)GPU_offscreen_object_unbind, METH_VARARGS | METH_KEYWO

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list