summaryrefslogtreecommitdiff
path: root/sdl3/bindings/gpu.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2024-10-02 21:22:19 -0400
committerDavid Thompson <dthompson2@worcester.edu>2024-10-19 21:49:01 -0400
commit9b1d91b4c68477145434021ea7392c16d849ebaa (patch)
tree3e6c3934c530d4cc79a85adc95729f8da2af61c3 /sdl3/bindings/gpu.scm
First commit!main
Diffstat (limited to 'sdl3/bindings/gpu.scm')
-rw-r--r--sdl3/bindings/gpu.scm1190
1 files changed, 1190 insertions, 0 deletions
diff --git a/sdl3/bindings/gpu.scm b/sdl3/bindings/gpu.scm
new file mode 100644
index 0000000..849e159
--- /dev/null
+++ b/sdl3/bindings/gpu.scm
@@ -0,0 +1,1190 @@
+;;; guile-sdl3 -- Scheme bindings for SDL3
+;;; Copyright © 2024 David Thompson <dthompson2@worcester.edu>
+;;;
+;;; Licensed under the Apache License, Version 2.0 (the "License");
+;;; you may not use this file except in compliance with the License.
+;;; You may obtain a copy of the License at
+;;;
+;;; http://www.apache.org/licenses/LICENSE-2.0
+;;;
+;;; Unless required by applicable law or agreed to in writing, software
+;;; distributed under the License is distributed on an "AS IS" BASIS,
+;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;;; See the License for the specific language governing permissions and
+;;; limitations under the License.
+
+;;; Commentary:
+;;
+;; Low-level bindings for SDL_gpu.h.
+;;
+;;; Code:
+
+(define-module (sdl3 bindings gpu)
+ #:use-module (bstruct)
+ #:use-module (sdl3 bindings utils)
+ #:use-module (sdl3 bindings pixels)
+ #:use-module (sdl3 bindings surface)
+ #:use-module (system foreign)
+ #:export (SDL_GPUPrimitiveType
+ symbol->gpu-primitive-type
+ primitive-type->symbol
+ SDL_GPU_PRIMITIVETYPE_TRIANGLELIST
+ SDL_GPU_PRIMITIVETYPE_TRIANGLESTRIP
+ SDL_GPU_PRIMITIVETYPE_LINELIST
+ SDL_GPU_PRIMITIVETYPE_LINESTRIP
+ SDL_GPU_PRIMITIVETYPE_POINTLIST
+
+ SDL_GPULoadOp
+ symbol->gpu-load-op
+ gpu-load-op->symbol
+ SDL_GPU_LOADOP_LOAD
+ SDL_GPU_LOADOP_CLEAR
+ SDL_GPU_LOADOP_DONT_CARE
+
+ SDL_GPUStoreOp
+ symbol->gpu-store-op
+ gpu-store-op->symbol
+ SDL_GPU_STOREOP_STORE
+ SDL_GPU_STOREOP_DONT_CARE
+ SDL_GPU_STOREOP_RESOLVE
+ SDL_GPU_STOREOP_RESOLVE_AND_STORE
+
+ SDL_GPUIndexElementSize
+ symbol->gpu-index-element-size
+ gpu-index-element-size->symbol
+ SDL_GPU_INDEXELEMENTSIZE_16BIT
+ SDL_GPU_INDEXELEMENTSIZE_32BIT
+
+ SDL_GPUTextureFormat
+ symbol->gpu-texture-format
+ gpu-texture-format->symbol
+ SDL_GPU_TEXTUREFORMAT_INVALID
+ SDL_GPU_TEXTUREFORMAT_A8_UNORM
+ SDL_GPU_TEXTUREFORMAT_R8_UNORM
+ SDL_GPU_TEXTUREFORMAT_R8G8_UNORM
+ SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM
+ SDL_GPU_TEXTUREFORMAT_R16_UNORM
+ SDL_GPU_TEXTUREFORMAT_R16G16_UNORM
+ SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UNORM
+ SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM
+ SDL_GPU_TEXTUREFORMAT_B5G6R5_UNORM
+ SDL_GPU_TEXTUREFORMAT_B5G5R5A1_UNORM
+ SDL_GPU_TEXTUREFORMAT_B4G4R4A4_UNORM
+ SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM
+ SDL_GPU_TEXTUREFORMAT_BC1_RGBA_UNORM
+ SDL_GPU_TEXTUREFORMAT_BC2_RGBA_UNORM
+ SDL_GPU_TEXTUREFORMAT_BC3_RGBA_UNORM
+ SDL_GPU_TEXTUREFORMAT_BC4_R_UNORM
+ SDL_GPU_TEXTUREFORMAT_BC5_RG_UNORM
+ SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM
+ SDL_GPU_TEXTUREFORMAT_BC6H_RGB_FLOAT
+ SDL_GPU_TEXTUREFORMAT_BC6H_RGB_UFLOAT
+ SDL_GPU_TEXTUREFORMAT_R8_SNORM
+ SDL_GPU_TEXTUREFORMAT_R8G8_SNORM
+ SDL_GPU_TEXTUREFORMAT_R8G8B8A8_SNORM
+ SDL_GPU_TEXTUREFORMAT_R16_SNORM
+ SDL_GPU_TEXTUREFORMAT_R16G16_SNORM
+ SDL_GPU_TEXTUREFORMAT_R16G16B16A16_SNORM
+ SDL_GPU_TEXTUREFORMAT_R16_FLOAT
+ SDL_GPU_TEXTUREFORMAT_R16G16_FLOAT
+ SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT
+ SDL_GPU_TEXTUREFORMAT_R32_FLOAT
+ SDL_GPU_TEXTUREFORMAT_R32G32_FLOAT
+ SDL_GPU_TEXTUREFORMAT_R32G32B32A32_FLOAT
+ SDL_GPU_TEXTUREFORMAT_R11G11B10_UFLOAT
+ SDL_GPU_TEXTUREFORMAT_R8_UINT
+ SDL_GPU_TEXTUREFORMAT_R8G8_UINT
+ SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UINT
+ SDL_GPU_TEXTUREFORMAT_R16_UINT
+ SDL_GPU_TEXTUREFORMAT_R16G16_UINT
+ SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UINT
+ SDL_GPU_TEXTUREFORMAT_R32_UINT
+ SDL_GPU_TEXTUREFORMAT_R32G32_UINT
+ SDL_GPU_TEXTUREFORMAT_R32G32B32A32_UINT
+ SDL_GPU_TEXTUREFORMAT_R8_INT
+ SDL_GPU_TEXTUREFORMAT_R8G8_INT
+ SDL_GPU_TEXTUREFORMAT_R8G8B8A8_INT
+ SDL_GPU_TEXTUREFORMAT_R16_INT
+ SDL_GPU_TEXTUREFORMAT_R16G16_INT
+ SDL_GPU_TEXTUREFORMAT_R16G16B16A16_INT
+ SDL_GPU_TEXTUREFORMAT_R32_INT
+ SDL_GPU_TEXTUREFORMAT_R32G32_INT
+ SDL_GPU_TEXTUREFORMAT_R32G32B32A32_INT
+ SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB
+ SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB
+ SDL_GPU_TEXTUREFORMAT_BC1_RGBA_UNORM_SRGB
+ SDL_GPU_TEXTUREFORMAT_BC2_RGBA_UNORM_SRGB
+ SDL_GPU_TEXTUREFORMAT_BC3_RGBA_UNORM_SRGB
+ SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM_SRGB
+ SDL_GPU_TEXTUREFORMAT_D16_UNORM
+ SDL_GPU_TEXTUREFORMAT_D24_UNORM
+ SDL_GPU_TEXTUREFORMAT_D32_FLOAT
+ SDL_GPU_TEXTUREFORMAT_D24_UNORM_S8_UINT
+ SDL_GPU_TEXTUREFORMAT_D32_FLOAT_S8_UINT
+
+ SDL_GPUTextureUsageFlags
+ symbols->gpu-texture-usage-flags
+ gpu-texture-usage-flags->symbols
+ SDL_GPU_TEXTUREUSAGE_SAMPLER
+ SDL_GPU_TEXTUREUSAGE_COLOR_TARGET
+ SDL_GPU_TEXTUREUSAGE_DEPTH_STENCIL_TARGET
+ SDL_GPU_TEXTUREUSAGE_GRAPHICS_STORAGE_READ
+ SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_READ
+ SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_WRITE
+ SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_SIMULTANEOUS_READ_WRITE
+
+ SDL_GPUTextureType
+ symbol->gpu-texture-type
+ gpu-texture-type->symbol
+ SDL_GPU_TEXTURETYPE_2D
+ SDL_GPU_TEXTURETYPE_2D_ARRAY
+ SDL_GPU_TEXTURETYPE_3D
+ SDL_GPU_TEXTURETYPE_CUBE
+ SDL_GPU_TEXTURETYPE_CUBE_ARRAY
+
+ SDL_GPUSampleCount
+ int->gpu-sample-count
+ gpu-sample-count->int
+ SDL_GPU_SAMPLECOUNT_1
+ SDL_GPU_SAMPLECOUNT_2
+ SDL_GPU_SAMPLECOUNT_4
+ SDL_GPU_SAMPLECOUNT_8
+
+ SDL_GPUCubeMapFace
+ symbol->gpu-cube-map-face
+ gpu-cube-map-face->symbol
+ SDL_GPU_CUBEMAPFACE_POSITIVEX
+ SDL_GPU_CUBEMAPFACE_NEGATIVEX
+ SDL_GPU_CUBEMAPFACE_POSITIVEY
+ SDL_GPU_CUBEMAPFACE_NEGATIVEY
+ SDL_GPU_CUBEMAPFACE_POSITIVEZ
+ SDL_GPU_CUBEMAPFACE_NEGATIVEZ
+
+ SDL_GPUBufferUsageFlags
+ symbols->gpu-buffer-usage-flags
+ gpu-buffer-usage-flags->symbols
+ SDL_GPU_BUFFERUSAGE_VERTEX
+ SDL_GPU_BUFFERUSAGE_INDEX
+ SDL_GPU_BUFFERUSAGE_INDIRECT
+ SDL_GPU_BUFFERUSAGE_GRAPHICS_STORAGE_READ
+ SDL_GPU_BUFFERUSAGE_COMPUTE_STORAGE_READ
+ SDL_GPU_BUFFERUSAGE_COMPUTE_STORAGE_WRITE
+
+ SDL_GPUTransferBufferUsage
+ symbol->gpu-transfer-buffer-usage
+ gpu-transfer-buffer-usage->symbol
+ SDL_GPU_TRANSFERBUFFERUSAGE_UPLOAD
+ SDL_GPU_TRANSFERBUFFERUSAGE_DOWNLOAD
+
+ SDL_GPUShaderStage
+ symbol->gpu-shader-stage
+ gpu-shader-stage->symbol
+ SDL_GPU_SHADERSTAGE_VERTEX
+ SDL_GPU_SHADERSTAGE_FRAGMENT
+
+ SDL_GPUShaderFormat
+ symbols->gpu-shader-format
+ gpu-shader-format->symbols
+ SDL_GPU_SHADERFORMAT_INVALID
+ SDL_GPU_SHADERFORMAT_PRIVATE
+ SDL_GPU_SHADERFORMAT_SPIRV
+ SDL_GPU_SHADERFORMAT_DXBC
+ SDL_GPU_SHADERFORMAT_DXIL
+ SDL_GPU_SHADERFORMAT_MSL
+ SDL_GPU_SHADERFORMAT_METALLIB
+
+ SDL_GPUVertexElementFormat
+ symbol->gpu-vertex-element-format
+ gpu-vertex-element-format->symbol
+ SDL_GPU_VERTEXELEMENTFORMAT_INVALID
+ SDL_GPU_VERTEXELEMENTFORMAT_INT
+ SDL_GPU_VERTEXELEMENTFORMAT_INT2
+ SDL_GPU_VERTEXELEMENTFORMAT_INT3
+ SDL_GPU_VERTEXELEMENTFORMAT_INT4
+ SDL_GPU_VERTEXELEMENTFORMAT_UINT
+ SDL_GPU_VERTEXELEMENTFORMAT_UINT2
+ SDL_GPU_VERTEXELEMENTFORMAT_UINT3
+ SDL_GPU_VERTEXELEMENTFORMAT_UINT4
+ SDL_GPU_VERTEXELEMENTFORMAT_FLOAT
+ SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2
+ SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3
+ SDL_GPU_VERTEXELEMENTFORMAT_FLOAT4
+ SDL_GPU_VERTEXELEMENTFORMAT_BYTE2
+ SDL_GPU_VERTEXELEMENTFORMAT_BYTE4
+ SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2
+ SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4
+ SDL_GPU_VERTEXELEMENTFORMAT_BYTE2_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_BYTE4_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_SHORT2
+ SDL_GPU_VERTEXELEMENTFORMAT_SHORT4
+ SDL_GPU_VERTEXELEMENTFORMAT_USHORT2
+ SDL_GPU_VERTEXELEMENTFORMAT_USHORT4
+ SDL_GPU_VERTEXELEMENTFORMAT_SHORT2_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_SHORT4_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_USHORT2_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_USHORT4_NORM
+ SDL_GPU_VERTEXELEMENTFORMAT_HALF2
+ SDL_GPU_VERTEXELEMENTFORMAT_HALF4
+
+ SDL_GPUVertexInputRate
+ symbol->gpu-vertex-input-rate
+ gpu-vertex-input-rate->symbol
+ SDL_GPU_VERTEXINPUTRATE_VERTEX
+ SDL_GPU_VERTEXINPUTRATE_INSTANCE
+
+ SDL_GPUFillMode
+ symbol->gpu-fill-mode
+ gpu-fill-mode->symbol
+ SDL_GPU_FILLMODE_FILL
+ SDL_GPU_FILLMODE_LINE
+
+ SDL_GPUCullMode
+ symbol->gpu-cull-mode
+ gpu-cull-mode->symbol
+ SDL_GPU_CULLMODE_NONE
+ SDL_GPU_CULLMODE_FRONT
+ SDL_GPU_CULLMODE_BACK
+
+ SDL_GPUFrontFace
+ symbol->gpu-front-face
+ gpu-front-face->symbol
+ SDL_GPU_FRONTFACE_COUNTER_CLOCKWISE
+ SDL_GPU_FRONTFACE_CLOCKWISE
+
+ SDL_GPUCompareOp
+ symbol->gpu-compare-op
+ gpu-compare-op->symbol
+ SDL_GPU_COMPAREOP_INVALID
+ SDL_GPU_COMPAREOP_NEVER
+ SDL_GPU_COMPAREOP_LESS
+ SDL_GPU_COMPAREOP_EQUAL
+ SDL_GPU_COMPAREOP_LESS_OR_EQUAL
+ SDL_GPU_COMPAREOP_GREATER
+ SDL_GPU_COMPAREOP_NOT_EQUAL
+ SDL_GPU_COMPAREOP_GREATER_OR_EQUAL
+ SDL_GPU_COMPAREOP_ALWAYS
+
+ SDL_GPUStencilOp
+ symbol->gpu-stencil-op
+ gpu-stencil-op->symbol
+ SDL_GPU_STENCILOP_INVALID
+ SDL_GPU_STENCILOP_KEEP
+ SDL_GPU_STENCILOP_ZERO
+ SDL_GPU_STENCILOP_REPLACE
+ SDL_GPU_STENCILOP_INCREMENT_AND_CLAMP
+ SDL_GPU_STENCILOP_DECREMENT_AND_CLAMP
+ SDL_GPU_STENCILOP_INVERT
+ SDL_GPU_STENCILOP_INCREMENT_AND_WRAP
+ SDL_GPU_STENCILOP_DECREMENT_AND_WRAP
+
+ SDL_GPUBlendOp
+ symbol->gpu-blend-op
+ gpu-blend-op->symbol
+ SDL_GPU_BLENDOP_INVALID
+ SDL_GPU_BLENDOP_ADD
+ SDL_GPU_BLENDOP_SUBTRACT
+ SDL_GPU_BLENDOP_REVERSE_SUBTRACT
+ SDL_GPU_BLENDOP_MIN
+ SDL_GPU_BLENDOP_MAX
+
+ SDL_GPUBlendFactor
+ symbol->gpu-blend-factor
+ gpu-blend-factor->symbol
+ SDL_GPU_BLENDFACTOR_INVALID
+ SDL_GPU_BLENDFACTOR_ZERO
+ SDL_GPU_BLENDFACTOR_ONE
+ SDL_GPU_BLENDFACTOR_SRC_COLOR
+ SDL_GPU_BLENDFACTOR_ONE_MINUS_SRC_COLOR
+ SDL_GPU_BLENDFACTOR_DST_COLOR
+ SDL_GPU_BLENDFACTOR_ONE_MINUS_DST_COLOR
+ SDL_GPU_BLENDFACTOR_SRC_ALPHA
+ SDL_GPU_BLENDFACTOR_ONE_MINUS_SRC_ALPHA
+ SDL_GPU_BLENDFACTOR_DST_ALPHA
+ SDL_GPU_BLENDFACTOR_ONE_MINUS_DST_ALPHA
+ SDL_GPU_BLENDFACTOR_CONSTANT_COLOR
+ SDL_GPU_BLENDFACTOR_ONE_MINUS_CONSTANT_COLOR
+ SDL_GPU_BLENDFACTOR_SRC_ALPHA_SATURATE
+
+ SDL_GPUColorComponentFlags
+ symbols->gpu-color-component-flags
+ gpu-color-component-flags->symbols
+ SDL_GPU_COLORCOMPONENT_R
+ SDL_GPU_COLORCOMPONENT_G
+ SDL_GPU_COLORCOMPONENT_B
+ SDL_GPU_COLORCOMPONENT_A
+
+ SDL_GPUFilter
+ symbol->gpu-filter
+ gpu-filter->symbol
+ SDL_GPU_FILTER_NEAREST
+ SDL_GPU_FILTER_LINEAR
+
+ SDL_GPUSamplerMipmapMode
+ symbol->gpu-sampler-mipmap-mode
+ gpu-sampler-mipmap-mode->symbol
+ SDL_GPU_SAMPLERMIPMAPMODE_NEAREST
+ SDL_GPU_SAMPLERMIPMAPMODE_LINEAR
+
+ SDL_GPUSamplerAddressMode
+ symbol->gpu-sampler-address-mode
+ gpu-sampler-address-mode->symbol
+ SDL_GPU_SAMPLERADDRESSMODE_REPEAT
+ SDL_GPU_SAMPLERADDRESSMODE_MIRRORED_REPEAT
+ SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE
+
+ SDL_GPUPresentMode
+ symbol->gpu-present-mode
+ gpu-present-mode->symbol
+ SDL_GPU_PRESENTMODE_VSYNC
+ SDL_GPU_PRESENTMODE_IMMEDIATE
+ SDL_GPU_PRESENTMODE_MAILBOX
+
+ SDL_GPUSwapchainComposition
+ symbol->gpu-swapchain-composition
+ gpu-swapchain-composition->symbol
+ SDL_GPU_SWAPCHAINCOMPOSITION_SDR
+ SDL_GPU_SWAPCHAINCOMPOSITION_SDR_LINEAR
+ SDL_GPU_SWAPCHAINCOMPOSITION_HDR_EXTENDED_LINEAR
+ SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2048
+
+ SDL_GPUViewport
+ SDL_GPUTextureTransferInfo
+ SDL_GPUTransferBufferLocation
+ SDL_GPUTextureLocation
+ SDL_GPUTextureRegion
+ SDL_GPUBlitRegion
+ SDL_GPUBufferLocation
+ SDL_GPUBufferRegion
+ SDL_GPUVertexBufferDescription
+ SDL_GPUVertexAttribute
+ SDL_GPUVertexInputState
+ SDL_GPUStencilOpState
+ SDL_GPUColorTargetBlendState
+ SDL_GPUShaderCreateInfo
+ SDL_GPUTextureCreateInfo
+ SDL_GPUBufferCreateInfo
+ SDL_GPUTransferBufferCreateInfo
+ SDL_GPURasterizerState
+ SDL_GPUMultisampleState
+ SDL_GPUDepthStencilState
+ SDL_GPUColorTargetDescription
+ SDL_GPUGraphicsPipelineTargetInfo
+ SDL_GPUGraphicsPipelineCreateInfo
+ SDL_GPUComputePipelineCreateInfo
+ SDL_GPUColorTargetInfo
+ SDL_GPUDepthStencilTargetInfo
+ SDL_GPUBlitInfo
+ SDL_GPUBufferBinding
+ SDL_GPUTextureSamplerBinding
+ SDL_GPUStorageBufferReadWriteBinding
+ SDL_GPUStorageTextureReadWriteBinding
+
+ gpu-device?
+ wrap-gpu-device
+ unwrap-gpu-device
+ gpu-device-destroyed?
+ set-gpu-device-destroyed!
+
+ gpu-buffer?
+ wrap-gpu-buffer
+ unwrap-gpu-buffer
+ gpu-buffer-released?
+ set-gpu-buffer-released!
+
+ gpu-transfer-buffer?
+ wrap-gpu-transfer-buffer
+ unwrap-gpu-transfer-buffer
+ gpu-transfer-buffer-released?
+ set-gpu-transfer-buffer-released!
+
+ gpu-shader?
+ wrap-gpu-shader
+ unwrap-gpu-shader
+ gpu-shader-released?
+ set-gpu-shader-released!
+
+ gpu-texture?
+ wrap-gpu-texture
+ unwrap-gpu-texture
+ gpu-texture-released?
+ set-gpu-texture-released!
+
+ gpu-graphics-pipeline?
+ wrap-gpu-graphics-pipeline
+ unwrap-gpu-graphics-pipeline
+ gpu-graphics-pipeline-released?
+ set-gpu-graphics-pipeline-released!
+
+ gpu-command-buffer?
+ wrap-gpu-command-buffer
+ unwrap-gpu-command-buffer
+
+ gpu-copy-pass?
+ wrap-gpu-copy-pass
+ unwrap-gpu-copy-pass
+
+ gpu-render-pass?
+ wrap-gpu-render-pass
+ unwrap-gpu-render-pass
+
+ gpu-compute-pass?
+ wrap-gpu-compute-pass
+ unwrap-gpu-compute-pass
+
+ SDL_AcquireGPUCommandBuffer
+ SDL_AcquireGPUSwapchainTexture
+ SDL_BeginGPUCopyPass
+ SDL_BeginGPURenderPass
+ SDL_BindGPUGraphicsPipeline
+ SDL_BindGPUVertexBuffers
+ SDL_BlitGPUTexture
+ SDL_CreateGPUBuffer
+ SDL_CreateGPUDevice
+ SDL_CreateGPUGraphicsPipeline
+ SDL_CreateGPUShader
+ SDL_CreateGPUTexture
+ SDL_CreateGPUTransferBuffer
+ SDL_ClaimWindowForGPUDevice
+ SDL_DestroyGPUDevice
+ SDL_DrawGPUPrimitives
+ SDL_EndGPUCopyPass
+ SDL_EndGPURenderPass
+ SDL_GetGPUDeviceDriver
+ SDL_GetGPUDriver
+ SDL_GetGPUSwapchainTextureFormat
+ SDL_GetNumGPUDrivers
+ SDL_GPUTextureSupportsSampleCount
+ SDL_MapGPUTransferBuffer
+ SDL_PushGPUVertexUniformData
+ SDL_PushGPUFragmentUniformData
+ SDL_ReleaseGPUBuffer
+ SDL_ReleaseGPUGraphicsPipeline
+ SDL_ReleaseGPUShader
+ SDL_ReleaseGPUTexture
+ SDL_ReleaseGPUTransferBuffer
+ SDL_ReleaseWindowFromGPUDevice
+ SDL_SetGPUBufferName
+ SDL_SubmitGPUCommandBuffer
+ SDL_UnmapGPUTransferBuffer
+ SDL_UploadToGPUBuffer))
+
+(define-enum SDL_GPUPrimitiveType
+ symbol->gpu-primitive-type
+ primitive-type->symbol
+ (triangle-list SDL_GPU_PRIMITIVETYPE_TRIANGLELIST)
+ (triangle-strip SDL_GPU_PRIMITIVETYPE_TRIANGLESTRIP)
+ (line-list SDL_GPU_PRIMITIVETYPE_LINELIST)
+ (line-strip SDL_GPU_PRIMITIVETYPE_LINESTRIP)
+ (point-list SDL_GPU_PRIMITIVETYPE_POINTLIST))
+
+(define-enum SDL_GPULoadOp
+ symbol->gpu-load-op
+ gpu-load-op->symbol
+ (load SDL_GPU_LOADOP_LOAD)
+ (clear SDL_GPU_LOADOP_CLEAR)
+ (dont-care SDL_GPU_LOADOP_DONT_CARE))
+
+(define-enum SDL_GPUStoreOp
+ symbol->gpu-store-op
+ gpu-store-op->symbol
+ (store SDL_GPU_STOREOP_STORE)
+ (dont-care SDL_GPU_STOREOP_DONT_CARE)
+ (resolve SDL_GPU_STOREOP_RESOLVE)
+ (resolve-and-store SDL_GPU_STOREOP_RESOLVE_AND_STORE))
+
+(define-enum SDL_GPUIndexElementSize
+ symbol->gpu-index-element-size
+ gpu-index-element-size->symbol
+ (16-bit SDL_GPU_INDEXELEMENTSIZE_16BIT)
+ (32-bit SDL_GPU_INDEXELEMENTSIZE_32BIT))
+
+(define-enum SDL_GPUTextureFormat
+ symbol->gpu-texture-format
+ gpu-texture-format->symbol
+ (invalid SDL_GPU_TEXTUREFORMAT_INVALID)
+ (a8-unorm SDL_GPU_TEXTUREFORMAT_A8_UNORM)
+ (r8-unorm SDL_GPU_TEXTUREFORMAT_R8_UNORM)
+ (r8g8-unorm SDL_GPU_TEXTUREFORMAT_R8G8_UNORM)
+ (r8g8b8a8-unorm SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM)
+ (r16-unorm SDL_GPU_TEXTUREFORMAT_R16_UNORM)
+ (r16g16-unorm SDL_GPU_TEXTUREFORMAT_R16G16_UNORM)
+ (r16g16b16a16-unorm SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UNORM)
+ (r10g10b10a2-unorm SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM)
+ (b5g6r5-unorm SDL_GPU_TEXTUREFORMAT_B5G6R5_UNORM)
+ (b5g5r5a1-unorm SDL_GPU_TEXTUREFORMAT_B5G5R5A1_UNORM)
+ (b4g4r4a4-unorm SDL_GPU_TEXTUREFORMAT_B4G4R4A4_UNORM)
+ (b8g8r8a8-unorm SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM)
+ (bc1-rbga-unorm SDL_GPU_TEXTUREFORMAT_BC1_RGBA_UNORM)
+ (bc2-rgba-unorm SDL_GPU_TEXTUREFORMAT_BC2_RGBA_UNORM)
+ (bc3-rgba-unorm SDL_GPU_TEXTUREFORMAT_BC3_RGBA_UNORM)
+ (bc4-r-unorm SDL_GPU_TEXTUREFORMAT_BC4_R_UNORM)
+ (bc5-rg-unorm SDL_GPU_TEXTUREFORMAT_BC5_RG_UNORM)
+ (bc7-rgba-unorm SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM)
+ (bc6h-rgb-float SDL_GPU_TEXTUREFORMAT_BC6H_RGB_FLOAT)
+ (bc6h-rgb-float SDL_GPU_TEXTUREFORMAT_BC6H_RGB_UFLOAT)
+ (r8-snorm SDL_GPU_TEXTUREFORMAT_R8_SNORM)
+ (r8g8-snorm SDL_GPU_TEXTUREFORMAT_R8G8_SNORM)
+ (r8g8b8a8-snorm SDL_GPU_TEXTUREFORMAT_R8G8B8A8_SNORM)
+ (r16-snorm SDL_GPU_TEXTUREFORMAT_R16_SNORM)
+ (r16g16-snorm SDL_GPU_TEXTUREFORMAT_R16G16_SNORM)
+ (r16g16b16a16-snorm SDL_GPU_TEXTUREFORMAT_R16G16B16A16_SNORM)
+ (r16-float SDL_GPU_TEXTUREFORMAT_R16_FLOAT)
+ (r16g16-float SDL_GPU_TEXTUREFORMAT_R16G16_FLOAT)
+ (r16g16b16a16-float SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT)
+ (r32-float SDL_GPU_TEXTUREFORMAT_R32_FLOAT)
+ (r32g32-float SDL_GPU_TEXTUREFORMAT_R32G32_FLOAT)
+ (r32g32b32a32-float SDL_GPU_TEXTUREFORMAT_R32G32B32A32_FLOAT)
+ (r11g11b10-ufloat SDL_GPU_TEXTUREFORMAT_R11G11B10_UFLOAT)
+ (r8-uint SDL_GPU_TEXTUREFORMAT_R8_UINT)
+ (r8g8-uint SDL_GPU_TEXTUREFORMAT_R8G8_UINT)
+ (r8g8b8a8-uint SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UINT)
+ (r16-uint SDL_GPU_TEXTUREFORMAT_R16_UINT)
+ (r16g16-uint SDL_GPU_TEXTUREFORMAT_R16G16_UINT)
+ (r16g16b16a16-uint SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UINT)
+ (r32-uint SDL_GPU_TEXTUREFORMAT_R32_UINT)
+ (r32g32-uint SDL_GPU_TEXTUREFORMAT_R32G32_UINT)
+ (r32g32b32a32-uint SDL_GPU_TEXTUREFORMAT_R32G32B32A32_UINT)
+ (r8-int SDL_GPU_TEXTUREFORMAT_R8_INT)
+ (r8g8-int SDL_GPU_TEXTUREFORMAT_R8G8_INT)
+ (r8g8b8a8-int SDL_GPU_TEXTUREFORMAT_R8G8B8A8_INT)
+ (r16-int SDL_GPU_TEXTUREFORMAT_R16_INT)
+ (r16g16-int SDL_GPU_TEXTUREFORMAT_R16G16_INT)
+ (r16g16b16a16-int SDL_GPU_TEXTUREFORMAT_R16G16B16A16_INT)
+ (r32-int SDL_GPU_TEXTUREFORMAT_R32_INT)
+ (r32g32-int SDL_GPU_TEXTUREFORMAT_R32G32_INT)
+ (r32g32b32a32-int SDL_GPU_TEXTUREFORMAT_R32G32B32A32_INT)
+ (r8g8b8a8-unorm-srgb SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB)
+ (b8g8r8a8-unorm-srgb SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB)
+ (bc1-unorm-srgb SDL_GPU_TEXTUREFORMAT_BC1_RGBA_UNORM_SRGB)
+ (bc2-unorm-srgb SDL_GPU_TEXTUREFORMAT_BC2_RGBA_UNORM_SRGB)
+ (bc3-unorm-srgb SDL_GPU_TEXTUREFORMAT_BC3_RGBA_UNORM_SRGB)
+ (bc7-unorm-srgb SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM_SRGB)
+ (d16-unorm SDL_GPU_TEXTUREFORMAT_D16_UNORM)
+ (d24-unorm SDL_GPU_TEXTUREFORMAT_D24_UNORM)
+ (d32-float SDL_GPU_TEXTUREFORMAT_D32_FLOAT)
+ (d24-unorm-s8-uint SDL_GPU_TEXTUREFORMAT_D24_UNORM_S8_UINT)
+ (d32-float-s8-uint SDL_GPU_TEXTUREFORMAT_D32_FLOAT_S8_UINT))
+
+(define-bitmask (SDL_GPUTextureUsageFlags uint32)
+ symbols->gpu-texture-usage-flags
+ gpu-texture-usage-flags->symbols
+ (sampler SDL_GPU_TEXTUREUSAGE_SAMPLER)
+ (color-target SDL_GPU_TEXTUREUSAGE_COLOR_TARGET)
+ (depth-stencil-target SDL_GPU_TEXTUREUSAGE_DEPTH_STENCIL_TARGET)
+ (graphics-storage-read SDL_GPU_TEXTUREUSAGE_GRAPHICS_STORAGE_READ)
+ (compute-storage-read SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_READ)
+ (compute-storage-write SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_WRITE)
+ (compute-storage-simultaneous-read-write
+ SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_SIMULTANEOUS_READ_WRITE))
+
+(define-enum SDL_GPUTextureType
+ symbol->gpu-texture-type
+ gpu-texture-type->symbol
+ (2d SDL_GPU_TEXTURETYPE_2D)
+ (2d-array SDL_GPU_TEXTURETYPE_2D_ARRAY)
+ (3d SDL_GPU_TEXTURETYPE_3D)
+ (cube SDL_GPU_TEXTURETYPE_CUBE)
+ (cube-array SDL_GPU_TEXTURETYPE_CUBE_ARRAY))
+
+(define-enum SDL_GPUSampleCount
+ int->gpu-sample-count
+ gpu-sample-count->int
+ (1 SDL_GPU_SAMPLECOUNT_1)
+ (2 SDL_GPU_SAMPLECOUNT_2)
+ (4 SDL_GPU_SAMPLECOUNT_4)
+ (8 SDL_GPU_SAMPLECOUNT_8))
+
+(define-enum SDL_GPUCubeMapFace
+ symbol->gpu-cube-map-face
+ gpu-cube-map-face->symbol
+ (positive-x SDL_GPU_CUBEMAPFACE_POSITIVEX)
+ (negative-x SDL_GPU_CUBEMAPFACE_NEGATIVEX)
+ (positive-y SDL_GPU_CUBEMAPFACE_POSITIVEY)
+ (negative-y SDL_GPU_CUBEMAPFACE_NEGATIVEY)
+ (positive-z SDL_GPU_CUBEMAPFACE_POSITIVEZ)
+ (negative-z SDL_GPU_CUBEMAPFACE_NEGATIVEZ))
+
+(define-bitmask (SDL_GPUBufferUsageFlags uint32)
+ symbols->gpu-buffer-usage-flags
+ gpu-buffer-usage-flags->symbols
+ (vertex SDL_GPU_BUFFERUSAGE_VERTEX)
+ (index SDL_GPU_BUFFERUSAGE_INDEX)
+ (indirect SDL_GPU_BUFFERUSAGE_INDIRECT)
+ (graphics-storage-read SDL_GPU_BUFFERUSAGE_GRAPHICS_STORAGE_READ)
+ (compute-storage-read SDL_GPU_BUFFERUSAGE_COMPUTE_STORAGE_READ)
+ (compute-storage-write SDL_GPU_BUFFERUSAGE_COMPUTE_STORAGE_WRITE))
+
+(define-enum SDL_GPUTransferBufferUsage
+ symbol->gpu-transfer-buffer-usage
+ gpu-transfer-buffer-usage->symbol
+ (upload SDL_GPU_TRANSFERBUFFERUSAGE_UPLOAD)
+ (download SDL_GPU_TRANSFERBUFFERUSAGE_DOWNLOAD))
+
+(define-enum SDL_GPUShaderStage
+ symbol->gpu-shader-stage
+ gpu-shader-stage->symbol
+ (vertex SDL_GPU_SHADERSTAGE_VERTEX)
+ (fragment SDL_GPU_SHADERSTAGE_FRAGMENT))
+
+(define-bitmask (SDL_GPUShaderFormat uint32)
+ symbols->gpu-shader-format
+ gpu-shader-format->symbols
+ (private SDL_GPU_SHADERFORMAT_PRIVATE)
+ (spirv SDL_GPU_SHADERFORMAT_SPIRV)
+ (dxbc SDL_GPU_SHADERFORMAT_DXBC)
+ (dxil SDL_GPU_SHADERFORMAT_DXIL)
+ (msl SDL_GPU_SHADERFORMAT_MSL)
+ (metallib SDL_GPU_SHADERFORMAT_METALLIB))
+(define SDL_GPU_SHADERFORMAT_INVALID 0)
+
+(define-enum SDL_GPUVertexElementFormat
+ symbol->gpu-vertex-element-format
+ gpu-vertex-element-format->symbol
+ (invalid SDL_GPU_VERTEXELEMENTFORMAT_INVALID)
+ (int SDL_GPU_VERTEXELEMENTFORMAT_INT)
+ (int2 SDL_GPU_VERTEXELEMENTFORMAT_INT2)
+ (int3 SDL_GPU_VERTEXELEMENTFORMAT_INT3)
+ (int4 SDL_GPU_VERTEXELEMENTFORMAT_INT4)
+ (uint SDL_GPU_VERTEXELEMENTFORMAT_UINT)
+ (uint2 SDL_GPU_VERTEXELEMENTFORMAT_UINT2)
+ (uint3 SDL_GPU_VERTEXELEMENTFORMAT_UINT3)
+ (uint4 SDL_GPU_VERTEXELEMENTFORMAT_UINT4)
+ (float SDL_GPU_VERTEXELEMENTFORMAT_FLOAT)
+ (float2 SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2)
+ (float3 SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3)
+ (float4 SDL_GPU_VERTEXELEMENTFORMAT_FLOAT4)
+ (byte2 SDL_GPU_VERTEXELEMENTFORMAT_BYTE2)
+ (byte4 SDL_GPU_VERTEXELEMENTFORMAT_BYTE4)
+ (ubyte2 SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2)
+ (ubyte4 SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4)
+ (byte2-norm SDL_GPU_VERTEXELEMENTFORMAT_BYTE2_NORM)
+ (byte4-norm SDL_GPU_VERTEXELEMENTFORMAT_BYTE4_NORM)
+ (ubyte2-norm SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2_NORM)
+ (ubyte4-norm SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4_NORM)
+ (short2 SDL_GPU_VERTEXELEMENTFORMAT_SHORT2)
+ (short4 SDL_GPU_VERTEXELEMENTFORMAT_SHORT4)
+ (ushort2 SDL_GPU_VERTEXELEMENTFORMAT_USHORT2)
+ (ushort4 SDL_GPU_VERTEXELEMENTFORMAT_USHORT4)
+ (short2-norm SDL_GPU_VERTEXELEMENTFORMAT_SHORT2_NORM)
+ (short4-norm SDL_GPU_VERTEXELEMENTFORMAT_SHORT4_NORM)
+ (ushort2-norm SDL_GPU_VERTEXELEMENTFORMAT_USHORT2_NORM)
+ (ushort4-norm SDL_GPU_VERTEXELEMENTFORMAT_USHORT4_NORM)
+ (half2 SDL_GPU_VERTEXELEMENTFORMAT_HALF2)
+ (half4 SDL_GPU_VERTEXELEMENTFORMAT_HALF4))
+
+(define-enum SDL_GPUVertexInputRate
+ symbol->gpu-vertex-input-rate
+ gpu-vertex-input-rate->symbol
+ (vertex SDL_GPU_VERTEXINPUTRATE_VERTEX)
+ (instance SDL_GPU_VERTEXINPUTRATE_INSTANCE))
+
+(define-enum SDL_GPUFillMode
+ symbol->gpu-fill-mode
+ gpu-fill-mode->symbol
+ (fill SDL_GPU_FILLMODE_FILL)
+ (line SDL_GPU_FILLMODE_LINE))
+
+(define-enum SDL_GPUCullMode
+ symbol->gpu-cull-mode
+ gpu-cull-mode->symbol
+ (none SDL_GPU_CULLMODE_NONE)
+ (front SDL_GPU_CULLMODE_FRONT)
+ (back SDL_GPU_CULLMODE_BACK))
+
+(define-enum SDL_GPUFrontFace
+ symbol->gpu-front-face
+ gpu-front-face->symbol
+ (counter-clockwise SDL_GPU_FRONTFACE_COUNTER_CLOCKWISE)
+ (clockwise SDL_GPU_FRONTFACE_CLOCKWISE))
+
+(define-enum SDL_GPUCompareOp
+ symbol->gpu-compare-op
+ gpu-compare-op->symbol
+ (invalid SDL_GPU_COMPAREOP_INVALID)
+ (never SDL_GPU_COMPAREOP_NEVER)
+ (less SDL_GPU_COMPAREOP_LESS)
+ (equal SDL_GPU_COMPAREOP_EQUAL)
+ (less-or-equal SDL_GPU_COMPAREOP_LESS_OR_EQUAL)
+ (greater SDL_GPU_COMPAREOP_GREATER)
+ (not-equal SDL_GPU_COMPAREOP_NOT_EQUAL)
+ (greater-or-equal SDL_GPU_COMPAREOP_GREATER_OR_EQUAL)
+ (always SDL_GPU_COMPAREOP_ALWAYS))
+
+(define-enum SDL_GPUStencilOp
+ symbol->gpu-stencil-op
+ gpu-stencil-op->symbol
+ (invalid SDL_GPU_STENCILOP_INVALID)
+ (keep SDL_GPU_STENCILOP_KEEP)
+ (zero SDL_GPU_STENCILOP_ZERO)
+ (replace SDL_GPU_STENCILOP_REPLACE)
+ (increment-and-clamp SDL_GPU_STENCILOP_INCREMENT_AND_CLAMP)
+ (decrement-and-clamp SDL_GPU_STENCILOP_DECREMENT_AND_CLAMP)
+ (invert SDL_GPU_STENCILOP_INVERT)
+ (increment-and-wrap SDL_GPU_STENCILOP_INCREMENT_AND_WRAP)
+ (decrement-and-wrap SDL_GPU_STENCILOP_DECREMENT_AND_WRAP))
+
+(define-enum SDL_GPUBlendOp
+ symbol->gpu-blend-op
+ gpu-blend-op->symbol
+ (invalid SDL_GPU_BLENDOP_INVALID)
+ (add SDL_GPU_BLENDOP_ADD)
+ (subtract SDL_GPU_BLENDOP_SUBTRACT)
+ (reverse-subtract SDL_GPU_BLENDOP_REVERSE_SUBTRACT)
+ (min SDL_GPU_BLENDOP_MIN)
+ (max SDL_GPU_BLENDOP_MAX))
+
+(define-enum SDL_GPUBlendFactor
+ symbol->gpu-blend-factor
+ gpu-blend-factor->symbol
+ (invalid SDL_GPU_BLENDFACTOR_INVALID)
+ (zero SDL_GPU_BLENDFACTOR_ZERO)
+ (one SDL_GPU_BLENDFACTOR_ONE)
+ (src-color SDL_GPU_BLENDFACTOR_SRC_COLOR)
+ (one-minus-src-color SDL_GPU_BLENDFACTOR_ONE_MINUS_SRC_COLOR)
+ (dst-color SDL_GPU_BLENDFACTOR_DST_COLOR)
+ (one-minus-dst-color SDL_GPU_BLENDFACTOR_ONE_MINUS_DST_COLOR)
+ (src-alpha SDL_GPU_BLENDFACTOR_SRC_ALPHA)
+ (one-minus-src-alpha SDL_GPU_BLENDFACTOR_ONE_MINUS_SRC_ALPHA)
+ (dst-alpha SDL_GPU_BLENDFACTOR_DST_ALPHA)
+ (one-minus-dst-alpha SDL_GPU_BLENDFACTOR_ONE_MINUS_DST_ALPHA)
+ (constant-color SDL_GPU_BLENDFACTOR_CONSTANT_COLOR)
+ (one-minus-constant-color SDL_GPU_BLENDFACTOR_ONE_MINUS_CONSTANT_COLOR)
+ (alpha-saturate SDL_GPU_BLENDFACTOR_SRC_ALPHA_SATURATE))
+
+(define-bitmask (SDL_GPUColorComponentFlags uint8)
+ symbols->gpu-color-component-flags
+ gpu-color-component-flags->symbols
+ (r SDL_GPU_COLORCOMPONENT_R)
+ (g SDL_GPU_COLORCOMPONENT_G)
+ (b SDL_GPU_COLORCOMPONENT_B)
+ (a SDL_GPU_COLORCOMPONENT_A))
+
+(define-enum SDL_GPUFilter
+ symbol->gpu-filter
+ gpu-filter->symbol
+ (nearest SDL_GPU_FILTER_NEAREST)
+ (linear SDL_GPU_FILTER_LINEAR))
+
+(define-enum SDL_GPUSamplerMipmapMode
+ symbol->gpu-sampler-mipmap-mode
+ gpu-sampler-mipmap-mode->symbol
+ (nearest SDL_GPU_SAMPLERMIPMAPMODE_NEAREST)
+ (linear SDL_GPU_SAMPLERMIPMAPMODE_LINEAR))
+
+(define-enum SDL_GPUSamplerAddressMode
+ symbol->gpu-sampler-address-mode
+ gpu-sampler-address-mode->symbol
+ (repease SDL_GPU_SAMPLERADDRESSMODE_REPEAT)
+ (mirrored-repeat SDL_GPU_SAMPLERADDRESSMODE_MIRRORED_REPEAT)
+ (clamp-to-edge SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE))
+
+(define-enum SDL_GPUPresentMode
+ symbol->gpu-present-mode
+ gpu-present-mode->symbol
+ (vsync SDL_GPU_PRESENTMODE_VSYNC)
+ (immediate SDL_GPU_PRESENTMODE_IMMEDIATE)
+ (mailbox SDL_GPU_PRESENTMODE_MAILBOX))
+
+(define-enum SDL_GPUSwapchainComposition
+ symbol->gpu-swapchain-composition
+ gpu-swapchain-composition->symbol
+ (sdr SDL_GPU_SWAPCHAINCOMPOSITION_SDR)
+ (sdr-linear SDL_GPU_SWAPCHAINCOMPOSITION_SDR_LINEAR)
+ (hdr-extended-linear SDL_GPU_SWAPCHAINCOMPOSITION_HDR_EXTENDED_LINEAR)
+ (hdr10-st2048 SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2048))
+
+(define-bstruct SDL_GPUViewport
+ (struct
+ (x f32)
+ (y f32)
+ (w f32)
+ (h f32)
+ (min_depth f32)
+ (max_depth f32)))
+
+(define-bstruct SDL_GPUTextureTransferInfo
+ (struct
+ (transfer_buffer (* void)) ; SDL_GPUTransferBuffer
+ (offset u32)
+ (pixels_per_row u32)
+ (rows_per_layer u32)))
+
+(define-bstruct SDL_GPUTransferBufferLocation
+ (struct
+ (transfer_buffer (* void)) ; SDL_GPUTransferBuffer
+ (offset u32)))
+
+(define-bstruct SDL_GPUTextureLocation
+ (struct
+ (texture (* void)) ; SDL_GPUTexture
+ (mip_level u32)
+ (layer u32)
+ (x u32)
+ (y u32)
+ (z u32)))
+
+(define-bstruct SDL_GPUTextureRegion
+ (struct
+ (texture (* void)) ; SDL_GPUTexture
+ (mip_level u32)
+ (layer u32)
+ (x u32)
+ (y u32)
+ (z u32)
+ (w u32)
+ (h u32)
+ (d u32)))
+
+(define-bstruct SDL_GPUBlitRegion
+ (struct
+ (texture (* void)) ; SDL_GPUTexture
+ (mip_level u32)
+ (layer_or_depth_plane u32)
+ (x u32)
+ (y u32)
+ (w u32)
+ (h u32)))
+
+(define-bstruct SDL_GPUBufferLocation
+ (struct
+ (buffer (* void)) ; SDL_GPUBuffer
+ (offset u32)))
+
+(define-bstruct SDL_GPUBufferRegion
+ (struct
+ (buffer (* void)) ; SDL_GPUBuffer
+ (offset u32)
+ (size u32)))
+
+(define-bstruct SDL_GPUVertexBufferDescription
+ (struct
+ (slot u32)
+ (pitch u32)
+ (input_rate int) ; SDL_GPUVertexInputRate
+ (instance_step_rate u32)))
+
+(define-bstruct SDL_GPUVertexAttribute
+ (struct
+ (location u32)
+ (buffer_slot u32)
+ (format int) ; SDL_GPUVertexElementFormat
+ (offset u32)))
+
+(define-bstruct SDL_GPUVertexInputState
+ (struct
+ (vertex_buffer_descriptions (* SDL_GPUVertexBufferDescription))
+ (num_vertex_buffers u32)
+ (vertex_attributes (* SDL_GPUVertexAttribute))
+ (num_vertex_attributes u32)))
+
+(define-bstruct SDL_GPUStencilOpState
+ (struct
+ (fail_op int) ; SDL_GPUStencilOp
+ (pass_op int) ; SDL_GPUStencilOp
+ (depth_fail_op int) ; SDL_GPUStencilOp
+ (compare_op int) ; SDL_GPUCompareOp
+ ))
+
+(define-bstruct SDL_GPUColorTargetBlendState
+ (struct
+ (src_color_blendfactor int) ; SDL_GPUBlendFactor
+ (dst_color_blendfactor int) ; SDL_GPUBlendFactor
+ (color_blend_op int) ; SDL_GPUBlendOp
+ (src_alpha_blendfactor int) ; SDL_GPUBlendFactor
+ (dst_alpha_blendfactor int) ; SDL_GPUBlendFactor
+ (alpha_blend_op int) ; SDL_GPUBlendOp
+ (color_write_mask u8) ; SDL_GPUColorComponentFlags
+ (enable_blend u8) ; bool
+ (enable_color_write_mask u8) ; bool
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUShaderCreateInfo
+ (struct
+ (code_size size_t)
+ (code (* u8))
+ (entrypoint (* u8)) ; char*
+ (format u32) ; SDL_GPUShaderFormat
+ (stage int) ; SDL_GPUShaderStage
+ (num_samplers u32)
+ (num_storage_textures u32)
+ (num_storage_buffers u32)
+ (num_uniform_buffers u32)
+ (props u32) ; SDL_PropertiesID
+ ))
+
+(define-bstruct SDL_GPUTextureCreateInfo
+ (struct
+ (type int) ; SDL_GPUTextureType
+ (format int) ; SDL_GPUTextureFormat
+ (usage u32) ; SDL_GPUTextureUsageFlags
+ (width u32)
+ (height u32)
+ (layer_count_or_depth u32)
+ (num_levels u32)
+ (sample_count int) ; SDL_GPUSampleCount
+ (props u32) ; SDL_PropertiesID
+ ))
+
+(define-bstruct SDL_GPUBufferCreateInfo
+ (struct
+ (usage u32) ; SDL_GPUBufferUsageFlags
+ (size u32)
+ (props u32) ; SDL_PropertiesID
+ ))
+
+(define-bstruct SDL_GPUTransferBufferCreateInfo
+ (struct
+ (usage u32) ; SDL_GPUTransferBufferUsage
+ (size u32)
+ (props u32) ; SDL_PropertiesID
+ ))
+
+(define-bstruct SDL_GPURasterizerState
+ (struct
+ (fill_mode int) ; SDL_GPUFillMode
+ (cull_mode int) ; SDL_GPUCullMode
+ (front_face int) ; SDL_GPUFrontFace
+ (depth_bias_constant_factor f32)
+ (depth_bias_clamp f32)
+ (depth_bias_slope_factor f32)
+ (enable_depth_bias u8) ; bool
+ (enable_depth_clip u8) ; bool
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUMultisampleState
+ (struct
+ (sample_count int) ; SDL_GPUSampleCount
+ (sample_mask u32)
+ (enable_mask u8) ; bool
+ (_ u8)
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUDepthStencilState
+ (struct
+ (compare_op u32) ; SDL_GPUCompareOp
+ (back_stencil_state SDL_GPUStencilOpState)
+ (front_stencil_state SDL_GPUStencilOpState)
+ (compare_mask u8)
+ (write_mask u8)
+ (enable_depth_test u8) ; bool
+ (enable_depth_write u8) ; bool
+ (enable_stencil_test u8) ; bool
+ (_ u8)
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUColorTargetDescription
+ (struct
+ (format u32) ; SDL_GPUTextureFormat
+ (blend_state SDL_GPUColorTargetBlendState)))
+
+(define-bstruct SDL_GPUGraphicsPipelineTargetInfo
+ (struct
+ (color_target_descriptions (* SDL_GPUColorTargetDescription))
+ (num_color_targets u32)
+ (depth_stencil_format u32) ; SDL_GPUTextureFormat
+ (has_depth_stencil_target u8) ; bool
+ (_ u8)
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUGraphicsPipelineCreateInfo
+ (struct
+ (vertex_shader (* void)) ; SDL_GPUShader
+ (fragment_shader (* void)) ; SDL_GPUShader
+ (vertex_input_state SDL_GPUVertexInputState)
+ (primitive_type int) ; SDL_GPUPrimitiveType
+ (rasterizer_state SDL_GPURasterizerState)
+ (multisample_state SDL_GPUMultisampleState)
+ (depth_stencil_state SDL_GPUDepthStencilState)
+ (target_info SDL_GPUGraphicsPipelineTargetInfo)
+ (props u32) ; SDL_PropertiesID
+ ))
+
+(define-bstruct SDL_GPUComputePipelineCreateInfo
+ (struct
+ (code_size size_t)
+ (code (* u8))
+ (entrypoint (* u8)) ; char
+ (format int) ; SDL_GPUShaderFormat
+ (num_samplers u32)
+ (num_readonly_storage_textures u32)
+ (num_readonly_storage_buffers u32)
+ (num_readwrite_storage_textures u32)
+ (num_readwrite_storage_buffers u32)
+ (num_uniform_buffers u32)
+ (threadcount_x u32)
+ (threadcount_y u32)
+ (threadcount_z u32)
+ (props u32) ; SDL_PropertiesID
+ ))
+
+(define-bstruct SDL_GPUColorTargetInfo
+ (struct
+ (texture (* void)) ; SDL_GPUTexture
+ (mip_level u32)
+ (layer_or_depth_plane u32)
+ (clear_color SDL_FColor)
+ (load_op int) ; SDL_GPULoadOp
+ (store_op int) ; SDL_GPUStoreOp
+ (resolve_texture (* void)) ; SDL_GPUTexture
+ (resolve_mip_level u32)
+ (resolve_layer u32)
+ (cycle u8) ; bool
+ (cycle_resolve_texture u8) ; bool
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUDepthStencilTargetInfo
+ (struct
+ (texture (* void)) ; SDL_GPUTexture
+ (clear_depth f32)
+ (load_op int) ; SDL_GPULoadOp
+ (store_op int) ; SDL_GPUStoreOp
+ (stencil_load_op int) ; SDL_GPULoadOp
+ (stencil_store_op int) ; SDL_GPUStoreOp
+ (cycle u8) ; bool
+ (clear_stencil u8)
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUBlitInfo
+ (struct
+ (source SDL_GPUBlitRegion)
+ (destination SDL_GPUBlitRegion)
+ (load_op int) ; SDL_GPULoadOp
+ (clear_color SDL_FColor)
+ (flip_mode int) ; SDL_FlipMode
+ (filter int) ; SDL_GPUFilter
+ (cycle u8) ; bool
+ (_ u8)
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUBufferBinding
+ (struct
+ (buffer (* void)) ; SDL_GPUBuffer
+ (offset u32)))
+
+(define-bstruct SDL_GPUTextureSamplerBinding
+ (struct
+ (texture (* void)) ; SDL_GPUTexture
+ (sampler (* void)) ; SDL_GPUSampler
+ ))
+
+(define-bstruct SDL_GPUStorageBufferReadWriteBinding
+ (struct
+ (buffer (* void)) ; SDL_GPUBuffer
+ (cycle u8) ; bool
+ (_ u8)
+ (_ u8)
+ (_ u8)))
+
+(define-bstruct SDL_GPUStorageTextureReadWriteBinding
+ (struct
+ (texture (* void)) ; SDL_GPUTexture
+ (mip_level u32)
+ (layer u32)
+ (cycle u8)
+ (_ u8)
+ (_ u8)
+ (_ u8)))
+
+(define-sdl-pointer-type <gpu-device>
+ gpu-device? wrap-gpu-device unwrap-gpu-device
+ gpu-device-destroyed? set-gpu-device-destroyed!
+ (lambda (device port)
+ (display "#<gpu-device>" port)))
+
+(define-sdl-pointer-type <gpu-buffer>
+ gpu-buffer? wrap-gpu-buffer unwrap-gpu-buffer
+ gpu-buffer-released? set-gpu-buffer-released!
+ (lambda (buffer port)
+ (display "#<gpu-buffer>" port)))
+
+(define-sdl-pointer-type <gpu-transfer-buffer>
+ gpu-transfer-buffer? wrap-gpu-transfer-buffer unwrap-gpu-transfer-buffer
+ gpu-transfer-buffer-released? set-gpu-transfer-buffer-released!
+ (lambda (transfer-buffer port)
+ (display "#<gpu-transfer-buffer>" port)))
+
+(define-sdl-pointer-type <gpu-shader>
+ gpu-shader? wrap-gpu-shader unwrap-gpu-shader
+ gpu-shader-released? set-gpu-shader-released!
+ (lambda (shader port)
+ (display "#<gpu-shader>" port)))
+
+(define-sdl-pointer-type <gpu-texture>
+ gpu-texture? wrap-gpu-texture unwrap-gpu-texture
+ gpu-texture-released? set-gpu-texture-released!
+ (lambda (texture port)
+ (format port "#<gpu-texture ~a>"
+ (pointer-address (unwrap-gpu-texture texture)))))
+
+(define-sdl-pointer-type <gpu-graphics-pipeline>
+ gpu-graphics-pipeline? wrap-gpu-graphics-pipeline unwrap-gpu-graphics-pipeline
+ gpu-graphics-pipeline-released? set-gpu-graphics-pipeline-released!
+ (lambda (graphics-pipeline port)
+ (display "#<gpu-graphics-pipeline>" port)))
+
+(define-wrapped-pointer-type <gpu-command-buffer>
+ gpu-command-buffer? wrap-gpu-command-buffer unwrap-gpu-command-buffer
+ (lambda (command-buffer port)
+ (display "#<gpu-command-buffer>" port)))
+
+(define-wrapped-pointer-type <gpu-copy-pass>
+ gpu-copy-pass? wrap-gpu-copy-pass unwrap-gpu-copy-pass
+ (lambda (copy-pass port)
+ (display "#<gpu-copy-pass>" port)))
+
+(define-wrapped-pointer-type <gpu-render-pass>
+ gpu-render-pass? wrap-gpu-render-pass unwrap-gpu-render-pass
+ (lambda (render-pass port)
+ (display "#<gpu-render-pass>" port)))
+
+(define-wrapped-pointer-type <gpu-compute-pass>
+ gpu-compute-pass? wrap-gpu-compute-pass unwrap-gpu-compute-pass
+ (lambda (compute-pass port)
+ (display "#<gpu-compute-pass>" port)))
+
+(define-sdl SDL_AcquireGPUCommandBuffer '* -> '*)
+(define-sdl SDL_AcquireGPUSwapchainTexture '* '* '* '* '* -> bool)
+(define-sdl SDL_BeginGPUCopyPass '* -> '*)
+(define-sdl SDL_BeginGPURenderPass '* '* uint32 '* -> '*)
+(define-sdl SDL_BindGPUGraphicsPipeline '* '*)
+(define-sdl SDL_BindGPUVertexBuffers '* uint32 '* uint32)
+(define-sdl SDL_BlitGPUTexture '* '*)
+(define-sdl SDL_CreateGPUBuffer '* '* -> '*)
+(define-sdl SDL_CreateGPUDevice SDL_GPUShaderFormat bool '* -> '*)
+(define-sdl SDL_CreateGPUGraphicsPipeline '* '* -> '*)
+(define-sdl SDL_CreateGPUShader '* '* -> '*)
+(define-sdl SDL_CreateGPUTexture '* '* -> '*)
+(define-sdl SDL_CreateGPUTransferBuffer '* '* -> '*)
+(define-sdl SDL_ClaimWindowForGPUDevice '* '* -> bool)
+(define-sdl SDL_DestroyGPUDevice '*)
+(define-sdl SDL_DrawGPUPrimitives '* uint32 uint32 uint32 uint32)
+(define-sdl SDL_EndGPUCopyPass '*)
+(define-sdl SDL_EndGPURenderPass '*)
+(define-sdl SDL_GetGPUDeviceDriver '* -> '*)
+(define-sdl SDL_GetGPUDriver int -> '*)
+(define-sdl SDL_GetGPUSwapchainTextureFormat '* '* -> SDL_GPUTextureFormat)
+(define-sdl SDL_GetNumGPUDrivers -> int)
+(define-sdl SDL_GPUTextureSupportsSampleCount '* SDL_GPUTextureFormat SDL_GPUSampleCount -> bool)
+(define-sdl SDL_MapGPUTransferBuffer '* '* bool -> '*)
+(define-sdl SDL_PushGPUFragmentUniformData '* uint32 '* uint32)
+(define-sdl SDL_PushGPUVertexUniformData '* uint32 '* uint32)
+(define-sdl SDL_ReleaseGPUBuffer '* '*)
+(define-sdl SDL_ReleaseGPUGraphicsPipeline '* '*)
+(define-sdl SDL_ReleaseGPUShader '* '*)
+(define-sdl SDL_ReleaseGPUTexture '* '*)
+(define-sdl SDL_ReleaseGPUTransferBuffer '* '*)
+(define-sdl SDL_ReleaseWindowFromGPUDevice '* '*)
+(define-sdl SDL_SetGPUBufferName '* '* '*)
+(define-sdl SDL_SubmitGPUCommandBuffer '* -> bool)
+(define-sdl SDL_UnmapGPUTransferBuffer '* '*)
+(define-sdl SDL_UploadToGPUBuffer '* '* '* bool)