# SDL_GetGPUDeviceProperties

Get the properties associated with a GPU device.

## Header File

Defined in [<SDL3/SDL_gpu.h>](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_gpu.h)

## Syntax

```c
SDL_PropertiesID SDL_GetGPUDeviceProperties(SDL_GPUDevice *device);
```

## Function Parameters

|                                  |            |                         |
| -------------------------------- | ---------- | ----------------------- |
| [SDL_GPUDevice](SDL_GPUDevice) * | **device** | a GPU context to query. |

## Return Value

([SDL_PropertiesID](SDL_PropertiesID)) Returns a valid property ID on
success or 0 on failure; call [SDL_GetError](SDL_GetError)() for more
information.

## Remarks

All properties are optional and may differ between GPU backends and SDL
versions.

The following properties are provided by SDL:

[`SDL_PROP_GPU_DEVICE_NAME_STRING`](SDL_PROP_GPU_DEVICE_NAME_STRING):
Contains the name of the underlying device as reported by the system
driver. This string has no standardized format, is highly inconsistent
between hardware devices and drivers, and is able to change at any time. Do
not attempt to parse this string as it is bound to fail at some point in
the future when system drivers are updated, new hardware devices are
introduced, or when SDL adds new GPU backends or modifies existing ones.

Strings that have been found in the wild include:

- GTX 970
- GeForce GTX 970
- NVIDIA GeForce GTX 970
- Microsoft Direct3D12 (NVIDIA GeForce GTX 970)
- NVIDIA Graphics Device
- GeForce GPU
- P106-100
- AMD 15D8:C9
- AMD Custom GPU 0405
- AMD Radeon (TM) Graphics
- ASUS Radeon RX 470 Series
- Intel(R) Arc(tm) A380 Graphics (DG2)
- Virtio-GPU Venus (NVIDIA TITAN V)
- SwiftShader Device (LLVM 16.0.0)
- llvmpipe (LLVM 15.0.4, 256 bits)
- Microsoft Basic Render Driver
- unknown device

The above list shows that the same device can have different formats, the
vendor name may or may not appear in the string, the included vendor name
may not be the vendor of the chipset on the device, some manufacturers
include pseudo-legal marks while others don't, some devices may not use a
marketing name in the string, the device string may be wrapped by the name
of a translation interface, the device may be emulated in software, or the
string may contain generic text that does not identify the device at all.

[`SDL_PROP_GPU_DEVICE_DRIVER_NAME_STRING`](SDL_PROP_GPU_DEVICE_DRIVER_NAME_STRING):
Contains the self-reported name of the underlying system driver.

Strings that have been found in the wild include:

- Intel Corporation
- Intel open-source Mesa driver
- Qualcomm Technologies Inc. Adreno Vulkan Driver
- MoltenVK
- Mali-G715
- venus

[`SDL_PROP_GPU_DEVICE_DRIVER_VERSION_STRING`](SDL_PROP_GPU_DEVICE_DRIVER_VERSION_STRING):
Contains the self-reported version of the underlying system driver. This is
a relatively short version string in an unspecified format. If
[SDL_PROP_GPU_DEVICE_DRIVER_INFO_STRING](SDL_PROP_GPU_DEVICE_DRIVER_INFO_STRING)
is available then that property should be preferred over this one as it may
contain additional information that is useful for identifying the exact
driver version used.

Strings that have been found in the wild include:

- 53.0.0
- 0.405.2463
- 32.0.15.6614

[`SDL_PROP_GPU_DEVICE_DRIVER_INFO_STRING`](SDL_PROP_GPU_DEVICE_DRIVER_INFO_STRING):
Contains the detailed version information of the underlying system driver
as reported by the driver. This is an arbitrary string with no standardized
format and it may contain newlines. This property should be preferred over
[SDL_PROP_GPU_DEVICE_DRIVER_VERSION_STRING](SDL_PROP_GPU_DEVICE_DRIVER_VERSION_STRING)
if it is available as it usually contains the same information but in a
format that is easier to read.

Strings that have been found in the wild include:

- 101.6559
- 1.2.11
- Mesa 21.2.2 (LLVM 12.0.1)
- Mesa 22.2.0-devel (git-f226222 2022-04-14 impish-oibaf-ppa)
- v1.r53p0-00eac0.824c4f31403fb1fbf8ee1042422c2129

This string has also been observed to be a multiline string (which has a
trailing newline):

```
Driver Build: 85da404, I46ff5fc46f, 1606794520
Date: 11/30/20
Compiler Version: EV031.31.04.01
Driver Branch: promo490_3_Google
```

## Thread Safety

It is safe to call this function from any thread.

## Version

This function is available since SDL 3.4.0.

----
[CategoryAPI](CategoryAPI), [CategoryAPIFunction](CategoryAPIFunction), [CategoryGPU](CategoryGPU)

