Blender V4.3
gpu_py_shader.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#ifndef __cplusplus
13#endif
14
15struct GPUShaderCreateInfo;
16struct GPUStageInterfaceInfo;
17
18/* Make sure that there is always a reference count for PyObjects of type String as the strings are
19 * passed by reference in the #GPUStageInterfaceInfo and #GPUShaderCreateInfo APIs. */
20#define USE_GPU_PY_REFERENCES
21
22/* `gpu_py_shader.cc` */
23
24extern PyTypeObject BPyGPUShader_Type;
25
26#define BPyGPUShader_Check(v) (Py_TYPE(v) == &BPyGPUShader_Type)
27
28typedef struct BPyGPUShader {
29 PyObject_VAR_HEAD
33
34PyObject *BPyGPUShader_CreatePyObject(struct GPUShader *shader, bool is_builtin);
35PyObject *bpygpu_shader_init(void);
36
37/* gpu_py_shader_create_info.cc */
38
39extern const struct PyC_StringEnumItems pygpu_attrtype_items[];
40extern PyTypeObject BPyGPUShaderCreateInfo_Type;
41extern PyTypeObject BPyGPUStageInterfaceInfo_Type;
42
43#define BPyGPUShaderCreateInfo_Check(v) (Py_TYPE(v) == &BPyGPUShaderCreateInfo_Type)
44#define BPyGPUStageInterfaceInfo_Check(v) (Py_TYPE(v) == &BPyGPUStageInterfaceInfo_Type)
45
47 PyObject_VAR_HEAD
48 GPUStageInterfaceInfo *interface;
49#ifdef USE_GPU_PY_REFERENCES
50 /* Just to keep a user to prevent freeing buffers we're using. */
51 PyObject *references;
52#endif
53};
54
56 PyObject_VAR_HEAD
57 GPUShaderCreateInfo *info;
58#ifdef USE_GPU_PY_REFERENCES
59 /* Just to keep a user to prevent freeing buffers we're using. */
60 PyObject *vertex_source;
61 PyObject *fragment_source;
62 PyObject *compute_source;
63 PyObject *typedef_source;
64 PyObject *references;
65#endif
67};
68
69PyObject *BPyGPUStageInterfaceInfo_CreatePyObject(GPUStageInterfaceInfo *interface);
70PyObject *BPyGPUShaderCreateInfo_CreatePyObject(GPUShaderCreateInfo *info);
struct GPUShader GPUShader
PyObject * BPyGPUShaderCreateInfo_CreatePyObject(GPUShaderCreateInfo *info)
PyTypeObject BPyGPUStageInterfaceInfo_Type
const struct PyC_StringEnumItems pygpu_attrtype_items[]
PyTypeObject BPyGPUShader_Type
PyObject * BPyGPUStageInterfaceInfo_CreatePyObject(GPUStageInterfaceInfo *interface)
PyObject * bpygpu_shader_init(void)
PyObject * BPyGPUShader_CreatePyObject(struct GPUShader *shader, bool is_builtin)
struct BPyGPUShader BPyGPUShader
PyTypeObject BPyGPUShaderCreateInfo_Type
PyObject_VAR_HEAD GPUShaderCreateInfo * info
PyObject_VAR_HEAD struct GPUShader * shader
PyObject_VAR_HEAD GPUStageInterfaceInfo * interface