SDL_BeginGPUComputePass - Begins a compute pass on a command buffer.
Contents
Availability
This function is available since SDL 3.2.0.
Description
A compute pass is defined by a set of texture subresources and buffers that may be written to by compute
pipelines. These textures and buffers must have been created with the COMPUTE_STORAGE_WRITE bit or the
COMPUTE_STORAGE_SIMULTANEOUS_READ_WRITE bit. If you do not create a texture with
COMPUTE_STORAGE_SIMULTANEOUS_READ_WRITE, you must not read from the texture in the compute pass. All
operations related to compute pipelines must take place inside of a compute pass. You must not begin
another compute pass, or a render pass or copy pass before ending the compute pass.
A VERY IMPORTANT NOTE - Reads and writes in compute passes are NOT implicitly synchronized. This means
you may cause data races by both reading and writing a resource region in a compute pass, or by writing
multiple times to a resource region. If your compute work depends on reading the completed output from a
previous dispatch, you MUST end the current compute pass and begin a new one before you can safely access
the data. Otherwise you will receive unexpected results. Reading and writing a texture in the same
compute pass is only supported by specific texture formats. Make sure you check the format support!
Function Parameters
command_buffer
a command buffer.
storage_texture_bindings
an array of writeable storage texture binding structs.
num_storage_texture_bindings
the number of storage textures to bind from the array.
storage_buffer_bindings
an array of writeable storage buffer binding structs.
num_storage_buffer_bindings
the number of storage buffers to bind from the array.
Header File
Defined in SDL3/SDL_gpu.h
Name
SDL_BeginGPUComputePass - Begins a compute pass on a command buffer.
Return Value
( SDL_GPUComputePass
*) Returns a compute pass handle.
See Also
•(3), SDL_EndGPUComputePass(3) Simple Directmedia Layer SDL 3.2.10 SDL_BeginGPUComputePass(3)
Synopsis
#include"SDL3/SDL.h"SDL_GPUComputePass*SDL_BeginGPUComputePass(SDL_GPUCommandBuffer*command_buffer,constSDL_GPUStorageTextureReadWriteBinding*storage_texture_bindings,Uint32num_storage_texture_bindings,constSDL_GPUStorageBufferReadWriteBinding*storage_buffer_bindings,Uint32num_storage_buffer_bindings);
