Blender
V2.93
source
blender
gpu
intern
gpu_capabilities.cc
Go to the documentation of this file.
1
/*
2
* This program is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU General Public License
4
* as published by the Free Software Foundation; either version 2
5
* of the License, or (at your option) any later version.
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software Foundation,
14
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15
*
16
* The Original Code is Copyright (C) 2005 Blender Foundation.
17
* All rights reserved.
18
*/
19
27
#include "
DNA_userdef_types.h
"
28
29
#include "
GPU_capabilities.h
"
30
31
#include "
gpu_context_private.hh
"
32
33
#include "
gpu_capabilities_private.hh
"
34
35
namespace
blender::gpu
{
36
37
GPUCapabilities
GCaps
;
38
39
}
40
41
using namespace
blender::gpu
;
42
43
/* -------------------------------------------------------------------- */
47
int
GPU_max_texture_size
(
void
)
48
{
49
return
GCaps
.
max_texture_size
;
50
}
51
52
int
GPU_texture_size_with_limit
(
int
res,
bool
limit_gl_texture_size)
53
{
54
int
size
=
GPU_max_texture_size
();
55
int
reslimit = (limit_gl_texture_size && (
U
.glreslimit != 0)) ?
min_ii
(
U
.glreslimit,
size
) :
56
size
;
57
return
min_ii
(reslimit, res);
58
}
59
60
int
GPU_max_texture_layers
(
void
)
61
{
62
return
GCaps
.
max_texture_layers
;
63
}
64
65
int
GPU_max_textures_vert
(
void
)
66
{
67
return
GCaps
.
max_textures_vert
;
68
}
69
70
int
GPU_max_textures_geom
(
void
)
71
{
72
return
GCaps
.
max_textures_geom
;
73
}
74
75
int
GPU_max_textures_frag
(
void
)
76
{
77
return
GCaps
.
max_textures_frag
;
78
}
79
80
int
GPU_max_textures
(
void
)
81
{
82
return
GCaps
.
max_textures
;
83
}
84
85
bool
GPU_mip_render_workaround
(
void
)
86
{
87
return
GCaps
.
mip_render_workaround
;
88
}
89
90
bool
GPU_depth_blitting_workaround
(
void
)
91
{
92
return
GCaps
.
depth_blitting_workaround
;
93
}
94
95
bool
GPU_use_main_context_workaround
(
void
)
96
{
97
return
GCaps
.
use_main_context_workaround
;
98
}
99
100
bool
GPU_crappy_amd_driver
(
void
)
101
{
102
/* Currently are the same drivers with the `unused_fb_slot` problem. */
103
return
GCaps
.
broken_amd_driver
;
104
}
105
106
bool
GPU_use_hq_normals_workaround
(
void
)
107
{
108
return
GCaps
.
use_hq_normals_workaround
;
109
}
110
111
bool
GPU_shader_image_load_store_support
(
void
)
112
{
113
return
GCaps
.
shader_image_load_store_support
;
114
}
115
118
/* -------------------------------------------------------------------- */
122
bool
GPU_mem_stats_supported
(
void
)
123
{
124
return
GCaps
.
mem_stats_support
;
125
}
126
127
void
GPU_mem_stats_get
(
int
*totalmem,
int
*freemem)
128
{
129
Context::get
()->
memory_statistics_get
(totalmem, freemem);
130
}
131
132
/* Return support for the active context + window. */
133
bool
GPU_stereo_quadbuffer_support
(
void
)
134
{
135
return
Context::get
()->
front_right
!=
nullptr
;
136
}
137
min_ii
MINLINE int min_ii(int a, int b)
Definition:
math_base_inline.c:508
DNA_userdef_types.h
GPU_capabilities.h
size
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition:
btDbvt.cpp:52
U
unsigned int U
Definition:
btGjkEpa3.h:78
blender::gpu::Context::get
static Context * get(void)
Definition:
gpu_context.cc:88
blender::gpu::Context::front_right
FrameBuffer * front_right
Definition:
gpu_context_private.hh:63
blender::gpu::Context::memory_statistics_get
virtual void memory_statistics_get(int *total_mem, int *free_mem)=0
GPU_max_textures_vert
int GPU_max_textures_vert(void)
Definition:
gpu_capabilities.cc:65
GPU_shader_image_load_store_support
bool GPU_shader_image_load_store_support(void)
Definition:
gpu_capabilities.cc:111
GPU_max_texture_size
int GPU_max_texture_size(void)
Definition:
gpu_capabilities.cc:47
GPU_max_textures_frag
int GPU_max_textures_frag(void)
Definition:
gpu_capabilities.cc:75
GPU_depth_blitting_workaround
bool GPU_depth_blitting_workaround(void)
Definition:
gpu_capabilities.cc:90
GPU_use_hq_normals_workaround
bool GPU_use_hq_normals_workaround(void)
Definition:
gpu_capabilities.cc:106
GPU_stereo_quadbuffer_support
bool GPU_stereo_quadbuffer_support(void)
Definition:
gpu_capabilities.cc:133
GPU_max_texture_layers
int GPU_max_texture_layers(void)
Definition:
gpu_capabilities.cc:60
GPU_max_textures_geom
int GPU_max_textures_geom(void)
Definition:
gpu_capabilities.cc:70
GPU_mem_stats_get
void GPU_mem_stats_get(int *totalmem, int *freemem)
Definition:
gpu_capabilities.cc:127
GPU_max_textures
int GPU_max_textures(void)
Definition:
gpu_capabilities.cc:80
GPU_texture_size_with_limit
int GPU_texture_size_with_limit(int res, bool limit_gl_texture_size)
Definition:
gpu_capabilities.cc:52
GPU_use_main_context_workaround
bool GPU_use_main_context_workaround(void)
Definition:
gpu_capabilities.cc:95
GPU_crappy_amd_driver
bool GPU_crappy_amd_driver(void)
Definition:
gpu_capabilities.cc:100
GPU_mip_render_workaround
bool GPU_mip_render_workaround(void)
Definition:
gpu_capabilities.cc:85
GPU_mem_stats_supported
bool GPU_mem_stats_supported(void)
Definition:
gpu_capabilities.cc:122
gpu_capabilities_private.hh
gpu_context_private.hh
blender::gpu
Definition:
gpu_backend.hh:29
blender::gpu::GCaps
GPUCapabilities GCaps
Definition:
gpu_capabilities.cc:37
blender::gpu::GPUCapabilities
Definition:
gpu_capabilities_private.hh:37
blender::gpu::GPUCapabilities::mip_render_workaround
bool mip_render_workaround
Definition:
gpu_capabilities_private.hh:47
blender::gpu::GPUCapabilities::max_textures_frag
int max_textures_frag
Definition:
gpu_capabilities_private.hh:43
blender::gpu::GPUCapabilities::broken_amd_driver
bool broken_amd_driver
Definition:
gpu_capabilities_private.hh:50
blender::gpu::GPUCapabilities::shader_image_load_store_support
bool shader_image_load_store_support
Definition:
gpu_capabilities_private.hh:45
blender::gpu::GPUCapabilities::max_texture_size
int max_texture_size
Definition:
gpu_capabilities_private.hh:38
blender::gpu::GPUCapabilities::use_main_context_workaround
bool use_main_context_workaround
Definition:
gpu_capabilities_private.hh:49
blender::gpu::GPUCapabilities::depth_blitting_workaround
bool depth_blitting_workaround
Definition:
gpu_capabilities_private.hh:48
blender::gpu::GPUCapabilities::max_texture_layers
int max_texture_layers
Definition:
gpu_capabilities_private.hh:39
blender::gpu::GPUCapabilities::max_textures_geom
int max_textures_geom
Definition:
gpu_capabilities_private.hh:42
blender::gpu::GPUCapabilities::max_textures
int max_textures
Definition:
gpu_capabilities_private.hh:40
blender::gpu::GPUCapabilities::max_textures_vert
int max_textures_vert
Definition:
gpu_capabilities_private.hh:41
blender::gpu::GPUCapabilities::mem_stats_support
bool mem_stats_support
Definition:
gpu_capabilities_private.hh:44
blender::gpu::GPUCapabilities::use_hq_normals_workaround
bool use_hq_normals_workaround
Definition:
gpu_capabilities_private.hh:51
Generated on Tue Jan 31 2023 14:37:24 for Blender by
doxygen
1.9.1