Blender  V3.3
gpu_py_shader.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #pragma once
8 
9 /* Make sure that there is always a reference count for PyObjects of type String as the strings are
10  * passed by reference in the #GPUStageInterfaceInfo and #GPUShaderCreateInfo APIs. */
11 #define USE_GPU_PY_REFERENCES
12 
13 /* gpu_py_shader.c */
14 
15 extern PyTypeObject BPyGPUShader_Type;
16 
17 #define BPyGPUShader_Check(v) (Py_TYPE(v) == &BPyGPUShader_Type)
18 
19 typedef struct BPyGPUShader {
20  PyObject_VAR_HEAD
21  struct GPUShader *shader;
22  bool is_builtin;
24 
25 PyObject *BPyGPUShader_CreatePyObject(struct GPUShader *shader, bool is_builtin);
26 PyObject *bpygpu_shader_init(void);
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 /* gpu_py_shader_create_info.cc */
33 
34 extern PyTypeObject BPyGPUShaderCreateInfo_Type;
35 extern PyTypeObject BPyGPUStageInterfaceInfo_Type;
36 
37 #define BPyGPUShaderCreateInfo_Check(v) (Py_TYPE(v) == &BPyGPUShaderCreateInfo_Type)
38 #define BPyGPUStageInterfaceInfo_Check(v) (Py_TYPE(v) == &BPyGPUStageInterfaceInfo_Type)
39 
40 typedef struct BPyGPUStageInterfaceInfo {
41  PyObject_VAR_HEAD
42  struct GPUStageInterfaceInfo *interface;
43 #ifdef USE_GPU_PY_REFERENCES
44  /* Just to keep a user to prevent freeing buf's we're using. */
45  PyObject *references;
46 #endif
48 
49 typedef struct BPyGPUShaderCreateInfo {
50  PyObject_VAR_HEAD
52 #ifdef USE_GPU_PY_REFERENCES
53  /* Just to keep a user to prevent freeing buf's we're using. */
54  PyObject *vertex_source;
55  PyObject *fragment_source;
56  PyObject *typedef_source;
57  PyObject *references;
58 #endif
61 
62 PyObject *BPyGPUStageInterfaceInfo_CreatePyObject(struct GPUStageInterfaceInfo *interface);
64 
65 #ifdef __cplusplus
66 }
67 #endif
struct GPUShader GPUShader
Definition: GPU_shader.h:20
struct GPUShaderCreateInfo GPUShaderCreateInfo
Definition: GPU_shader.h:18
PyObject * BPyGPUShader_CreatePyObject(struct GPUShader *shader, bool is_builtin)
struct BPyGPUShaderCreateInfo BPyGPUShaderCreateInfo
PyTypeObject BPyGPUStageInterfaceInfo_Type
PyTypeObject BPyGPUShader_Type
struct BPyGPUStageInterfaceInfo BPyGPUStageInterfaceInfo
struct BPyGPUShader BPyGPUShader
PyObject * bpygpu_shader_init(void)
PyObject * BPyGPUStageInterfaceInfo_CreatePyObject(struct GPUStageInterfaceInfo *interface)
PyTypeObject BPyGPUShaderCreateInfo_Type
PyObject * BPyGPUShaderCreateInfo_CreatePyObject(struct GPUShaderCreateInfo *info)
bool is_builtin(const void *UNUSED(owner), const AttributeIDRef &attribute_id)
PyObject_VAR_HEAD struct GPUShaderCreateInfo * info
Definition: gpu_py_shader.h:51
PyObject * fragment_source
Definition: gpu_py_shader.h:55
PyObject_VAR_HEAD struct GPUShader * shader
Definition: gpu_py_shader.h:21
PyObject_VAR_HEAD struct GPUStageInterfaceInfo * interface
Definition: gpu_py_shader.h:42