Blender
V4.3
source
blender
gpu
GPU_platform.hh
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2005 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
9
#pragma once
10
11
#include <string>
12
13
#include "
BLI_span.hh
"
14
#include "
BLI_sys_types.h
"
15
#include "
BLI_utildefines.h
"
16
17
#include "
GPU_platform_backend_enum.h
"
18
19
/* GPU platform support */
20
21
/* GPU Types */
22
enum
eGPUDeviceType
{
23
GPU_DEVICE_NVIDIA
= (1 << 0),
24
GPU_DEVICE_ATI
= (1 << 1),
25
GPU_DEVICE_INTEL
= (1 << 2),
26
GPU_DEVICE_INTEL_UHD
= (1 << 3),
27
GPU_DEVICE_APPLE
= (1 << 4),
28
GPU_DEVICE_SOFTWARE
= (1 << 5),
29
GPU_DEVICE_QUALCOMM
= (1 << 6),
30
GPU_DEVICE_UNKNOWN
= (1 << 7),
31
GPU_DEVICE_ANY
= (0xff),
32
};
33
34
ENUM_OPERATORS
(
eGPUDeviceType
,
GPU_DEVICE_ANY
)
35
36
enum
eGPUOSType
{
37
GPU_OS_WIN
= (1 << 8),
38
GPU_OS_MAC
= (1 << 9),
39
GPU_OS_UNIX
= (1 << 10),
40
GPU_OS_ANY
= (0xff00),
41
};
42
43
enum
eGPUDriverType
{
44
GPU_DRIVER_OFFICIAL
= (1 << 16),
45
GPU_DRIVER_OPENSOURCE
= (1 << 17),
46
GPU_DRIVER_SOFTWARE
= (1 << 18),
47
GPU_DRIVER_ANY
= (0xff0000),
48
};
49
50
enum
eGPUSupportLevel
{
51
GPU_SUPPORT_LEVEL_SUPPORTED
,
52
GPU_SUPPORT_LEVEL_LIMITED
,
53
GPU_SUPPORT_LEVEL_UNSUPPORTED
,
54
};
55
56
enum
GPUArchitectureType
{
57
/* Immediate Mode Renderer (IMR).
58
* Typically, an IMR architecture will execute GPU work in sequence, rasterizing primitives in
59
* order. */
60
GPU_ARCHITECTURE_IMR
= 0,
61
62
/* Tile-Based-Deferred-Renderer (TBDR).
63
* A TBDR architecture will typically execute the vertex stage up-front for all primitives,
64
* binning geometry into distinct tiled regions. Fragments will then be rasterized within
65
* the bounds of one tile at a time. */
66
GPU_ARCHITECTURE_TBDR
= 1,
67
};
68
69
typedef
struct
GPUDevice
{
70
std::string
identifier
;
71
int
index
;
72
uint32_t
vendor_id
;
73
uint32_t
device_id
;
74
std::string
name
;
75
}
GPUDevice
;
76
77
/* GPU Types */
78
/* TODO: Verify all use-cases of GPU_type_matches to determine which graphics API it should apply
79
* to, and replace with `GPU_type_matches_ex` where appropriate. */
80
bool
GPU_type_matches
(
eGPUDeviceType
device,
eGPUOSType
os,
eGPUDriverType
driver);
81
bool
GPU_type_matches_ex
(
eGPUDeviceType
device,
82
eGPUOSType
os,
83
eGPUDriverType
driver,
84
eGPUBackendType
backend);
85
86
eGPUSupportLevel
GPU_platform_support_level
();
87
const
char
*
GPU_platform_vendor
();
88
const
char
*
GPU_platform_renderer
();
89
const
char
*
GPU_platform_version
();
90
const
char
*
GPU_platform_support_level_key
();
91
const
char
*
GPU_platform_gpu_name
();
92
GPUArchitectureType
GPU_platform_architecture
();
93
blender::Span<GPUDevice>
GPU_platform_devices_list
();
BLI_span.hh
BLI_sys_types.h
BLI_utildefines.h
ENUM_OPERATORS
#define ENUM_OPERATORS(_type, _max)
Definition
BLI_utildefines.h:616
eGPUDriverType
eGPUDriverType
Definition
GPU_platform.hh:43
GPU_DRIVER_ANY
@ GPU_DRIVER_ANY
Definition
GPU_platform.hh:47
GPU_DRIVER_OFFICIAL
@ GPU_DRIVER_OFFICIAL
Definition
GPU_platform.hh:44
GPU_DRIVER_OPENSOURCE
@ GPU_DRIVER_OPENSOURCE
Definition
GPU_platform.hh:45
GPU_DRIVER_SOFTWARE
@ GPU_DRIVER_SOFTWARE
Definition
GPU_platform.hh:46
GPUDevice
struct GPUDevice GPUDevice
Definition
cycles/device/memory.h:262
GPU_platform_vendor
const char * GPU_platform_vendor()
Definition
gpu_platform.cc:126
GPU_platform_gpu_name
const char * GPU_platform_gpu_name()
Definition
gpu_platform.cc:150
GPU_type_matches_ex
bool GPU_type_matches_ex(eGPUDeviceType device, eGPUOSType os, eGPUDriverType driver, eGPUBackendType backend)
Definition
gpu_platform.cc:167
GPU_platform_support_level_key
const char * GPU_platform_support_level_key()
Definition
gpu_platform.cc:144
GPUArchitectureType
GPUArchitectureType
Definition
GPU_platform.hh:56
GPU_ARCHITECTURE_TBDR
@ GPU_ARCHITECTURE_TBDR
Definition
GPU_platform.hh:66
GPU_ARCHITECTURE_IMR
@ GPU_ARCHITECTURE_IMR
Definition
GPU_platform.hh:60
eGPUSupportLevel
eGPUSupportLevel
Definition
GPU_platform.hh:50
GPU_SUPPORT_LEVEL_LIMITED
@ GPU_SUPPORT_LEVEL_LIMITED
Definition
GPU_platform.hh:52
GPU_SUPPORT_LEVEL_SUPPORTED
@ GPU_SUPPORT_LEVEL_SUPPORTED
Definition
GPU_platform.hh:51
GPU_SUPPORT_LEVEL_UNSUPPORTED
@ GPU_SUPPORT_LEVEL_UNSUPPORTED
Definition
GPU_platform.hh:53
GPU_platform_renderer
const char * GPU_platform_renderer()
Definition
gpu_platform.cc:132
eGPUOSType
eGPUOSType
Definition
GPU_platform.hh:36
GPU_OS_WIN
@ GPU_OS_WIN
Definition
GPU_platform.hh:37
GPU_OS_UNIX
@ GPU_OS_UNIX
Definition
GPU_platform.hh:39
GPU_OS_ANY
@ GPU_OS_ANY
Definition
GPU_platform.hh:40
GPU_OS_MAC
@ GPU_OS_MAC
Definition
GPU_platform.hh:38
eGPUDeviceType
eGPUDeviceType
Definition
GPU_platform.hh:22
GPU_DEVICE_UNKNOWN
@ GPU_DEVICE_UNKNOWN
Definition
GPU_platform.hh:30
GPU_DEVICE_ATI
@ GPU_DEVICE_ATI
Definition
GPU_platform.hh:24
GPU_DEVICE_INTEL_UHD
@ GPU_DEVICE_INTEL_UHD
Definition
GPU_platform.hh:26
GPU_DEVICE_QUALCOMM
@ GPU_DEVICE_QUALCOMM
Definition
GPU_platform.hh:29
GPU_DEVICE_SOFTWARE
@ GPU_DEVICE_SOFTWARE
Definition
GPU_platform.hh:28
GPU_DEVICE_NVIDIA
@ GPU_DEVICE_NVIDIA
Definition
GPU_platform.hh:23
GPU_DEVICE_ANY
@ GPU_DEVICE_ANY
Definition
GPU_platform.hh:31
GPU_DEVICE_APPLE
@ GPU_DEVICE_APPLE
Definition
GPU_platform.hh:27
GPU_DEVICE_INTEL
@ GPU_DEVICE_INTEL
Definition
GPU_platform.hh:25
GPU_platform_version
const char * GPU_platform_version()
Definition
gpu_platform.cc:138
GPU_type_matches
bool GPU_type_matches(eGPUDeviceType device, eGPUOSType os, eGPUDriverType driver)
Definition
gpu_platform.cc:162
GPU_platform_devices_list
blender::Span< GPUDevice > GPU_platform_devices_list()
Definition
gpu_platform.cc:177
GPU_platform_support_level
eGPUSupportLevel GPU_platform_support_level()
Definition
gpu_platform.cc:120
GPU_platform_architecture
GPUArchitectureType GPU_platform_architecture()
Definition
gpu_platform.cc:156
GPU_platform_backend_enum.h
eGPUBackendType
eGPUBackendType
Definition
GPU_platform_backend_enum.h:11
blender::Span
Definition
BLI_span.hh:75
uint32_t
unsigned int uint32_t
Definition
stdint.h:80
GPUDevice
Definition
GPU_platform.hh:69
GPUDevice::index
int index
Definition
GPU_platform.hh:71
GPUDevice::device_id
uint32_t device_id
Definition
GPU_platform.hh:73
GPUDevice::identifier
std::string identifier
Definition
GPU_platform.hh:70
GPUDevice::name
std::string name
Definition
GPU_platform.hh:74
GPUDevice::vendor_id
uint32_t vendor_id
Definition
GPU_platform.hh:72
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0