SDL_GPUCOMPUTEPIPELINECREATEINFO(3type)

πŸ’– SDL_GPUComputePipelineCreateInfo πŸ’–

okay bestie so this is a page from the SDL3 DATATYPES section of the SDL manual, and it's all about one lil struct: SDL_GPUComputePipelineCreateInfo. It's giving "paperwork but make it gpu" πŸŽ€


✨ NAME ✨

SDL_GPUComputePipelineCreateInfo β€” a structure specifying the parameters of a compute pipeline state.

Like, it's the lil info card you hand over when you want SDL to build you a compute pipeline. No cap. 🫢


🌸 SYNOPSIS 🌸

#include <SDL3/SDL_gpu.h>

typedef struct SDL_GPUComputePipelineCreateInfo
{
    size_t code_size;                       /**< The size in bytes of the compute shader code pointed to. */
    const Uint8 *code;                      /**< A pointer to compute shader code. */
    const char *entrypoint;                 /**< A pointer to a null-terminated UTF-8 string specifying the entry point function name for the shader. */
    SDL_GPUShaderFormat format;             /**< The format of the compute shader code. */
    Uint32 num_samplers;                    /**< The number of samplers defined in the shader. */
    Uint32 num_readonly_storage_textures;   /**< The number of readonly storage textures defined in the shader. */
    Uint32 num_readonly_storage_buffers;    /**< The number of readonly storage buffers defined in the shader. */
    Uint32 num_readwrite_storage_textures;  /**< The number of read-write storage textures defined in the shader. */
    Uint32 num_readwrite_storage_buffers;   /**< The number of read-write storage buffers defined in the shader. */
    Uint32 num_uniform_buffers;             /**< The number of uniform buffers defined in the shader. */
    Uint32 threadcount_x;                   /**< The number of threads in the X dimension. This should match the value in the shader. */
    Uint32 threadcount_y;                   /**< The number of threads in the Y dimension. This should match the value in the shader. */
    Uint32 threadcount_z;                   /**< The number of threads in the Z dimension. This should match the value in the shader. */

    SDL_PropertiesID props;                 /**< A properties ID for extensions. Should be 0 if no extensions are needed. */
} SDL_GPUComputePipelineCreateInfo;

πŸ¦‹ DESCRIPTION πŸ¦‹

so basically, every field in this struct is a lil fact about your compute shader that SDL needs to know before it can do its thing. Let's go through them one by one, no skipping, we're thorough in this house πŸ’…

  • size_t code_size β€” the size in bytes of the compute shader code that's being pointed to. Yes bestie, in bytes, it said what it said.
  • const Uint8 *code β€” a pointer to the actual compute shader code. There it is. The whole point.
  • const char *entrypoint β€” a pointer to a null-terminated UTF-8 string that specifies the entry point function name for the shader. So like, which function do we start at? Tell it. Be specific.
  • SDL_GPUShaderFormat format β€” the format of the compute shader code.
  • Uint32 num_samplers β€” the number of samplers defined in the shader.
  • Uint32 num_readonly_storage_textures β€” the number of readonly storage textures defined in the shader.
  • Uint32 num_readonly_storage_buffers β€” the number of readonly storage buffers defined in the shader.
  • Uint32 num_readwrite_storage_textures β€” the number of read-write storage textures defined in the shader.
  • Uint32 num_readwrite_storage_buffers β€” the number of read-write storage buffers defined in the shader.
  • Uint32 num_uniform_buffers β€” the number of uniform buffers defined in the shader.
  • Uint32 threadcount_x β€” the number of threads in the X dimension. ⚠️ This should match the value in the shader. Don't lie to it.
  • Uint32 threadcount_y β€” the number of threads in the Y dimension. Again: this should match the value in the shader.
  • Uint32 threadcount_z β€” the number of threads in the Z dimension. You already know: this should match the value in the shader.

and then, the plot twist of it all:

  • SDL_PropertiesID props β€” a properties ID for extensions. Should be 0 if no extensions are needed. Like, zero. The number zero. If you're not doing extensions, it's a 0, periodt. 🌈
lowkey important: those three threadcount_* fields are not vibes-based. They should match the value in the shader, fr fr. Mismatches are not the move. 😭

⭐ AVAILABILITY ⭐

This struct is available since SDL 3.2.0. So if you're on something older than that... yeah. Upgrade era. πŸ’€


πŸ‘‘ SEE ALSO πŸ‘‘


and that's the whole page bestie, you ate it, go build a compute pipeline 🧚✨

Simple Directmedia Layer β€’ SDL 3.4.18 β€” mwah, that's the version and the source, ty for coming to my ted talk, ily, bye πŸ’œπŸŒˆπŸŽ€

πŸ“¦ where this page comes from