Blender V4.3
GPU_state.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#include "BLI_utildefines.h"
12
14struct GPUFence;
15
26
28
30 /* Texture Barrier. */
31
41 // GPU_BARRIER_PIXEL_BUFFER = (1 << 4), /* Not implemented yet. */
42
43 /* Buffer Barrier. */
44
58 // GPU_BARRIER_CLIENT_MAPPED_BUFFER = (1 << 15), /* Not implemented yet. */
59};
60
62
63/* NOTE: For Metal and Vulkan only.
64 * TODO(Metal): Update barrier calls to use stage flags. */
73
75
76
106
109 GPU_DEPTH_ALWAYS, /* Used to draw to the depth buffer without really testing. */
111 GPU_DEPTH_LESS_EQUAL, /* Default. */
115};
116
123
131
133 GPU_CULL_NONE = 0, /* Culling disabled. */
136};
137
139 GPU_VERTEX_LAST = 0, /* Default. */
140 GPU_VERTEX_FIRST = 1, /* Follow Blender loop order. */
141};
142
148void GPU_front_facing(bool invert);
149void GPU_depth_range(float near, float far);
150void GPU_scissor_test(bool enable);
151void GPU_line_smooth(bool enable);
157void GPU_line_width(float width);
158void GPU_logic_op_xor_set(bool enable);
159void GPU_point_size(float size);
160void GPU_polygon_smooth(bool enable);
161
169void GPU_program_point_size(bool enable);
170void GPU_scissor(int x, int y, int width, int height);
171void GPU_scissor_get(int coords[4]);
172void GPU_viewport(int x, int y, int width, int height);
173void GPU_viewport_size_get_f(float coords[4]);
174void GPU_viewport_size_get_i(int coords[4]);
176void GPU_color_mask(bool r, bool g, bool b, bool a);
177void GPU_depth_mask(bool depth);
178bool GPU_depth_mask_get();
179void GPU_shadow_offset(bool enable);
180void GPU_clip_distances(int distances_enabled);
181bool GPU_mipmap_enabled();
182void GPU_state_set(eGPUWriteMask write_mask,
184 eGPUFaceCullTest culling_test,
185 eGPUDepthTest depth_test,
186 eGPUStencilTest stencil_test,
187 eGPUStencilOp stencil_op,
188 eGPUProvokingVertex provoking_vert);
189
190void GPU_stencil_reference_set(uint reference);
191void GPU_stencil_write_mask_set(uint write_mask);
192void GPU_stencil_compare_mask_set(uint compare_mask);
193
203float GPU_line_width_get();
204
205void GPU_flush();
206void GPU_finish();
207void GPU_apply_state();
208
209void GPU_bgl_start();
210
214void GPU_bgl_end();
215bool GPU_bgl_get();
216
225void GPU_memory_barrier(eGPUBarrier barrier);
226
228void GPU_fence_free(GPUFence *fence);
229void GPU_fence_signal(GPUFence *fence);
230void GPU_fence_wait(GPUFence *fence);
unsigned int uint
#define ENUM_OPERATORS(_type, _max)
void GPU_memory_barrier(eGPUBarrier barrier)
Definition gpu_state.cc:374
void GPU_program_point_size(bool enable)
Definition gpu_state.cc:175
void GPU_face_culling(eGPUFaceCullTest culling)
Definition gpu_state.cc:47
eGPUFaceCullTest GPU_face_culling_get()
Definition gpu_state.cc:52
void GPU_flush()
Definition gpu_state.cc:294
eGPUBlend
Definition GPU_state.hh:84
@ GPU_BLEND_ADDITIVE_PREMULT
Definition GPU_state.hh:90
@ GPU_BLEND_INVERT
Definition GPU_state.hh:95
@ GPU_BLEND_OIT
Definition GPU_state.hh:98
@ GPU_BLEND_MULTIPLY
Definition GPU_state.hh:91
@ GPU_BLEND_NONE
Definition GPU_state.hh:85
@ GPU_BLEND_ALPHA
Definition GPU_state.hh:87
@ GPU_BLEND_CUSTOM
Definition GPU_state.hh:103
@ GPU_BLEND_ADDITIVE
Definition GPU_state.hh:89
@ GPU_BLEND_SUBTRACT
Definition GPU_state.hh:92
@ GPU_BLEND_ALPHA_UNDER_PREMUL
Definition GPU_state.hh:104
@ GPU_BLEND_BACKGROUND
Definition GPU_state.hh:100
@ GPU_BLEND_ALPHA_PREMULT
Definition GPU_state.hh:88
void GPU_blend(eGPUBlend blend)
Definition gpu_state.cc:42
void GPU_write_mask(eGPUWriteMask mask)
Definition gpu_state.cc:93
void GPU_scissor_test(bool enable)
Definition gpu_state.cc:183
void GPU_line_width(float width)
Definition gpu_state.cc:161
eGPUWriteMask
Definition GPU_state.hh:16
@ GPU_WRITE_RED
Definition GPU_state.hh:18
@ GPU_WRITE_STENCIL
Definition GPU_state.hh:23
@ GPU_WRITE_NONE
Definition GPU_state.hh:17
@ GPU_WRITE_GREEN
Definition GPU_state.hh:19
@ GPU_WRITE_BLUE
Definition GPU_state.hh:20
@ GPU_WRITE_DEPTH
Definition GPU_state.hh:22
@ GPU_WRITE_COLOR
Definition GPU_state.hh:24
@ GPU_WRITE_ALPHA
Definition GPU_state.hh:21
eGPUBlend GPU_blend_get()
Definition gpu_state.cc:221
void GPU_finish()
Definition gpu_state.cc:299
void GPU_line_smooth(bool enable)
Definition gpu_state.cc:78
eGPUProvokingVertex
Definition GPU_state.hh:138
@ GPU_VERTEX_LAST
Definition GPU_state.hh:139
@ GPU_VERTEX_FIRST
Definition GPU_state.hh:140
void GPU_logic_op_xor_set(bool enable)
Definition gpu_state.cc:88
void GPU_depth_mask(bool depth)
Definition gpu_state.cc:110
eGPUDepthTest GPU_depth_test_get()
Definition gpu_state.cc:239
void GPU_bgl_start()
Definition gpu_state.cc:319
void GPU_stencil_test(eGPUStencilTest test)
Definition gpu_state.cc:73
void GPU_stencil_write_mask_set(uint write_mask)
Definition gpu_state.cc:205
eGPUStageBarrierBits
Definition GPU_state.hh:65
@ GPU_BARRIER_STAGE_COMPUTE
Definition GPU_state.hh:68
@ GPU_BARRIER_STAGE_FRAGMENT
Definition GPU_state.hh:67
@ GPU_BARRIER_STAGE_VERTEX
Definition GPU_state.hh:66
@ GPU_BARRIER_STAGE_ANY
Definition GPU_state.hh:70
@ GPU_BARRIER_STAGE_ANY_GRAPHICS
Definition GPU_state.hh:69
eGPUFaceCullTest
Definition GPU_state.hh:132
@ GPU_CULL_FRONT
Definition GPU_state.hh:134
@ GPU_CULL_NONE
Definition GPU_state.hh:133
@ GPU_CULL_BACK
Definition GPU_state.hh:135
bool GPU_mipmap_enabled()
Definition gpu_state.cc:282
void GPU_color_mask(bool r, bool g, bool b, bool a)
Definition gpu_state.cc:98
GPUFence * GPU_fence_create()
Definition gpu_state.cc:379
void GPU_depth_range(float near, float far)
Definition gpu_state.cc:154
void GPU_viewport_size_get_i(int coords[4])
Definition gpu_state.cc:271
eGPUWriteMask GPU_write_mask_get()
Definition gpu_state.cc:227
void GPU_stencil_reference_set(uint reference)
Definition gpu_state.cc:200
void GPU_scissor(int x, int y, int width, int height)
Definition gpu_state.cc:188
eGPUBarrier
Definition GPU_state.hh:29
@ GPU_BARRIER_COMMAND
Definition GPU_state.hh:46
@ GPU_BARRIER_SHADER_STORAGE
Definition GPU_state.hh:48
@ GPU_BARRIER_TEXTURE_FETCH
Definition GPU_state.hh:37
@ GPU_BARRIER_BUFFER_UPDATE
Definition GPU_state.hh:56
@ GPU_BARRIER_ELEMENT_ARRAY
Definition GPU_state.hh:52
@ GPU_BARRIER_UNIFORM
Definition GPU_state.hh:54
@ GPU_BARRIER_SHADER_IMAGE_ACCESS
Definition GPU_state.hh:35
@ GPU_BARRIER_VERTEX_ATTRIB_ARRAY
Definition GPU_state.hh:50
@ GPU_BARRIER_TEXTURE_UPDATE
Definition GPU_state.hh:39
@ GPU_BARRIER_FRAMEBUFFER
Definition GPU_state.hh:33
eGPUStencilOp
Definition GPU_state.hh:124
@ GPU_STENCIL_OP_COUNT_DEPTH_FAIL
Definition GPU_state.hh:129
@ GPU_STENCIL_OP_COUNT_DEPTH_PASS
Definition GPU_state.hh:128
@ GPU_STENCIL_OP_REPLACE
Definition GPU_state.hh:126
@ GPU_STENCIL_OP_NONE
Definition GPU_state.hh:125
float GPU_line_width_get()
Definition gpu_state.cc:251
void GPU_stencil_compare_mask_set(uint compare_mask)
Definition gpu_state.cc:210
eGPUStencilTest GPU_stencil_test_get()
Definition gpu_state.cc:245
void GPU_front_facing(bool invert)
Definition gpu_state.cc:58
void GPU_viewport(int x, int y, int width, int height)
Definition gpu_state.cc:194
void GPU_fence_wait(GPUFence *fence)
Definition gpu_state.cc:395
void GPU_point_size(float size)
Definition gpu_state.cc:167
eGPUDepthTest
Definition GPU_state.hh:107
@ GPU_DEPTH_GREATER
Definition GPU_state.hh:113
@ GPU_DEPTH_EQUAL
Definition GPU_state.hh:112
@ GPU_DEPTH_ALWAYS
Definition GPU_state.hh:109
@ GPU_DEPTH_GREATER_EQUAL
Definition GPU_state.hh:114
@ GPU_DEPTH_LESS
Definition GPU_state.hh:110
@ GPU_DEPTH_LESS_EQUAL
Definition GPU_state.hh:111
@ GPU_DEPTH_NONE
Definition GPU_state.hh:108
uint GPU_stencil_mask_get()
Definition gpu_state.cc:233
void GPU_bgl_end()
Definition gpu_state.cc:349
bool GPU_bgl_get()
Definition gpu_state.cc:363
void GPU_state_set(eGPUWriteMask write_mask, eGPUBlend blend, eGPUFaceCullTest culling_test, eGPUDepthTest depth_test, eGPUStencilTest stencil_test, eGPUStencilOp stencil_op, eGPUProvokingVertex provoking_vert)
Definition gpu_state.cc:129
eGPUStencilTest
Definition GPU_state.hh:117
@ GPU_STENCIL_EQUAL
Definition GPU_state.hh:120
@ GPU_STENCIL_NEQUAL
Definition GPU_state.hh:121
@ GPU_STENCIL_ALWAYS
Definition GPU_state.hh:119
@ GPU_STENCIL_NONE
Definition GPU_state.hh:118
void GPU_fence_signal(GPUFence *fence)
Definition gpu_state.cc:390
void GPU_depth_test(eGPUDepthTest test)
Definition gpu_state.cc:68
void GPU_viewport_size_get_f(float coords[4])
Definition gpu_state.cc:262
void GPU_apply_state()
Definition gpu_state.cc:304
bool GPU_depth_mask_get()
Definition gpu_state.cc:276
void GPU_scissor_get(int coords[4])
Definition gpu_state.cc:257
void GPU_clip_distances(int distances_enabled)
Definition gpu_state.cc:124
void GPU_fence_free(GPUFence *fence)
Definition gpu_state.cc:385
void GPU_provoking_vertex(eGPUProvokingVertex vert)
Definition gpu_state.cc:63
void GPU_polygon_smooth(bool enable)
Definition gpu_state.cc:83
void GPU_shadow_offset(bool enable)
Definition gpu_state.cc:119
struct GPUFence GPUFence
local_group_size(16, 16) .push_constant(Type b
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
Definition invert.h:9