Blender  V3.3
gpu_capabilities.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2005 Blender Foundation. All rights reserved. */
3 
11 #include "DNA_userdef_types.h" /* For `U.glreslimit`. */
12 
13 #include "GPU_capabilities.h"
14 
15 #include "gpu_context_private.hh"
16 
18 
19 namespace blender::gpu {
20 
22 
23 }
24 
25 using namespace blender::gpu;
26 
27 /* -------------------------------------------------------------------- */
32 {
33  return GCaps.max_texture_size;
34 }
35 
37 {
38  int size = GPU_max_texture_size();
39  int reslimit = (U.glreslimit != 0) ? min_ii(U.glreslimit, size) : size;
40  return min_ii(reslimit, res);
41 }
42 
44 {
46 }
47 
49 {
50  return GCaps.max_textures_vert;
51 }
52 
54 {
55  return GCaps.max_textures_geom;
56 }
57 
59 {
60  return GCaps.max_textures_frag;
61 }
62 
64 {
65  return GCaps.max_textures;
66 }
67 
69 {
70  return GCaps.max_work_group_count[index];
71 }
72 
74 {
75  return GCaps.max_work_group_size[index];
76 }
77 
79 {
80  return GCaps.max_uniforms_vert;
81 }
82 
84 {
85  return GCaps.max_uniforms_frag;
86 }
87 
89 {
90  return GCaps.max_batch_indices;
91 }
92 
94 {
96 }
97 
99 {
100  return GCaps.max_vertex_attribs;
101 }
102 
104 {
105  return GCaps.max_varying_floats;
106 }
107 
109 {
110  return GCaps.extensions_len;
111 }
112 
113 const char *GPU_extension_get(int i)
114 {
115  return GCaps.extension_get ? GCaps.extension_get(i) : "\0";
116 }
117 
119 {
121 }
122 
124 {
126 }
127 
129 {
131 }
132 
134 {
135  /* Currently are the same drivers with the `unused_fb_slot` problem. */
136  return GCaps.broken_amd_driver;
137 }
138 
140 {
142 }
143 
145 {
147 }
148 
150 {
152 }
153 
155 {
157 }
158 
160 {
162 }
163 
165 {
167 }
168 
170 {
172 }
173 
176 /* -------------------------------------------------------------------- */
181 {
182  return GCaps.mem_stats_support;
183 }
184 
185 void GPU_mem_stats_get(int *totalmem, int *freemem)
186 {
187  Context::get()->memory_statistics_get(totalmem, freemem);
188 }
189 
191 {
192  return Context::get()->front_right != nullptr;
193 }
194 
MINLINE int min_ii(int a, int b)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition: btDbvt.cpp:52
unsigned int U
Definition: btGjkEpa3.h:78
static Context * get()
Definition: gpu_context.cc:82
virtual void memory_statistics_get(int *total_mem, int *free_mem)=0
int GPU_max_batch_indices()
int GPU_max_textures()
int GPU_max_work_group_size(int index)
bool GPU_crappy_amd_driver()
int GPU_max_texture_layers()
int GPU_max_uniforms_vert()
bool GPU_shader_storage_buffer_objects_support()
int GPU_max_shader_storage_buffer_bindings()
int GPU_texture_size_with_limit(int res)
bool GPU_shader_image_load_store_support()
bool GPU_depth_blitting_workaround()
int GPU_max_work_group_count(int index)
bool GPU_mem_stats_supported()
bool GPU_stereo_quadbuffer_support()
int GPU_max_textures_geom()
bool GPU_use_main_context_workaround()
int GPU_max_textures_frag()
int GPU_max_vertex_attribs()
bool GPU_use_hq_normals_workaround()
const char * GPU_extension_get(int i)
void GPU_mem_stats_get(int *totalmem, int *freemem)
bool GPU_clear_viewport_workaround()
int GPU_max_varying_floats()
bool GPU_compute_shader_support()
int GPU_max_compute_shader_storage_blocks()
int GPU_max_batch_vertices()
int GPU_extensions_len()
int GPU_max_uniforms_frag()
bool GPU_mip_render_workaround()
int GPU_max_texture_size()
int GPU_max_textures_vert()
GPUCapabilities GCaps