Renamed SDL_GPURenderStateDesc to SDL_GPURenderStateCreateInfo for consistency with GPU API conventions

Fixes https://github.com/libsdl-org/SDL/issues/12817
This commit is contained in:
Sam Lantinga
2025-08-27 05:38:31 -07:00
parent 0a6b80717c
commit 285df94623
5 changed files with 36 additions and 55 deletions

View File

@@ -2809,18 +2809,14 @@ extern SDL_DECLSPEC bool SDLCALL SDL_SetDefaultTextureScaleMode(SDL_Renderer *re
extern SDL_DECLSPEC bool SDLCALL SDL_GetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode *scale_mode); extern SDL_DECLSPEC bool SDLCALL SDL_GetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode *scale_mode);
/** /**
* GPU render state description. * A structure specifying the parameters of a GPU render state.
*
* This structure should be initialized using SDL_INIT_INTERFACE().
* *
* \since This struct is available since SDL 3.4.0. * \since This struct is available since SDL 3.4.0.
* *
* \sa SDL_CreateGPURenderState * \sa SDL_CreateGPURenderState
*/ */
typedef struct SDL_GPURenderStateDesc typedef struct SDL_GPURenderStateCreateInfo
{ {
Uint32 version; /**< the version of this interface */
SDL_GPUShader *fragment_shader; /**< The fragment shader to use when this render state is active */ SDL_GPUShader *fragment_shader; /**< The fragment shader to use when this render state is active */
Sint32 num_sampler_bindings; /**< The number of additional fragment samplers to bind when this render state is active */ Sint32 num_sampler_bindings; /**< The number of additional fragment samplers to bind when this render state is active */
@@ -2829,19 +2825,11 @@ typedef struct SDL_GPURenderStateDesc
Sint32 num_storage_textures; /**< The number of storage textures to bind when this render state is active */ Sint32 num_storage_textures; /**< The number of storage textures to bind when this render state is active */
SDL_GPUTexture *const *storage_textures; /**< Storage textures to bind when this render state is active */ SDL_GPUTexture *const *storage_textures; /**< Storage textures to bind when this render state is active */
Sint32 num_storage_buffers; /**< The number of storage buffers to bind when this render state is active */ Sint32 num_storage_buffers; /**< The number of storage buffers to bind when this render state is active */
SDL_GPUBuffer *const *storage_buffers; /**< Storage buffers to bind when this render state is active */ SDL_GPUBuffer *const *storage_buffers; /**< Storage buffers to bind when this render state is active */
} SDL_GPURenderStateDesc;
/* Check the size of SDL_GPURenderStateDesc SDL_PropertiesID props; /**< A properties ID for extensions. Should be 0 if no extensions are needed. */
* } SDL_GPURenderStateCreateInfo;
* If this assert fails, either the compiler is padding to an unexpected size,
* or the interface has been updated and this should be updated to match and
* the code using this interface should be updated to handle the old version.
*/
SDL_COMPILE_TIME_ASSERT(SDL_GPURenderStateDesc_SIZE,
(sizeof(void *) == 4 && sizeof(SDL_GPURenderStateDesc) == 32) ||
(sizeof(void *) == 8 && sizeof(SDL_GPURenderStateDesc) == 64));
/** /**
* A custom GPU render state. * A custom GPU render state.
@@ -2859,8 +2847,7 @@ typedef struct SDL_GPURenderState SDL_GPURenderState;
* Create custom GPU render state. * Create custom GPU render state.
* *
* \param renderer the renderer to use. * \param renderer the renderer to use.
* \param desc GPU render state description, initialized using * \param createinfo a struct describing the GPU render state to create.
* SDL_INIT_INTERFACE().
* \returns a custom GPU render state or NULL on failure; call SDL_GetError() * \returns a custom GPU render state or NULL on failure; call SDL_GetError()
* for more information. * for more information.
* *
@@ -2873,7 +2860,7 @@ typedef struct SDL_GPURenderState SDL_GPURenderState;
* \sa SDL_SetRenderGPUState * \sa SDL_SetRenderGPUState
* \sa SDL_DestroyGPURenderState * \sa SDL_DestroyGPURenderState
*/ */
extern SDL_DECLSPEC SDL_GPURenderState * SDLCALL SDL_CreateGPURenderState(SDL_Renderer *renderer, SDL_GPURenderStateDesc *desc); extern SDL_DECLSPEC SDL_GPURenderState * SDLCALL SDL_CreateGPURenderState(SDL_Renderer *renderer, SDL_GPURenderStateCreateInfo *createinfo);
/** /**
* Set fragment shader uniform variables in a custom GPU render state. * Set fragment shader uniform variables in a custom GPU render state.

View File

@@ -1271,7 +1271,7 @@ SDL_DYNAPI_PROC(bool,SDL_SetRelativeMouseTransform,(SDL_MouseMotionTransformCall
SDL_DYNAPI_PROC(bool,SDL_RenderTexture9GridTiled,(SDL_Renderer *a,SDL_Texture *b,const SDL_FRect *c,float d,float e,float f,float g,float h,const SDL_FRect *i,float j),(a,b,c,d,e,f,g,h,i,j),return) SDL_DYNAPI_PROC(bool,SDL_RenderTexture9GridTiled,(SDL_Renderer *a,SDL_Texture *b,const SDL_FRect *c,float d,float e,float f,float g,float h,const SDL_FRect *i,float j),(a,b,c,d,e,f,g,h,i,j),return)
SDL_DYNAPI_PROC(bool,SDL_SetDefaultTextureScaleMode,(SDL_Renderer *a,SDL_ScaleMode b),(a,b),return) SDL_DYNAPI_PROC(bool,SDL_SetDefaultTextureScaleMode,(SDL_Renderer *a,SDL_ScaleMode b),(a,b),return)
SDL_DYNAPI_PROC(bool,SDL_GetDefaultTextureScaleMode,(SDL_Renderer *a,SDL_ScaleMode *b),(a,b),return) SDL_DYNAPI_PROC(bool,SDL_GetDefaultTextureScaleMode,(SDL_Renderer *a,SDL_ScaleMode *b),(a,b),return)
SDL_DYNAPI_PROC(SDL_GPURenderState*,SDL_CreateGPURenderState,(SDL_Renderer *a,SDL_GPURenderStateDesc *b),(a,b),return) SDL_DYNAPI_PROC(SDL_GPURenderState*,SDL_CreateGPURenderState,(SDL_Renderer *a,SDL_GPURenderStateCreateInfo *b),(a,b),return)
SDL_DYNAPI_PROC(bool,SDL_SetGPURenderStateFragmentUniforms,(SDL_GPURenderState *a,Uint32 b,const void *c,Uint32 d),(a,b,c,d),return) SDL_DYNAPI_PROC(bool,SDL_SetGPURenderStateFragmentUniforms,(SDL_GPURenderState *a,Uint32 b,const void *c,Uint32 d),(a,b,c,d),return)
SDL_DYNAPI_PROC(bool,SDL_SetRenderGPUState,(SDL_Renderer *a,SDL_GPURenderState *b),(a,b),return) SDL_DYNAPI_PROC(bool,SDL_SetRenderGPUState,(SDL_Renderer *a,SDL_GPURenderState *b),(a,b),return)
SDL_DYNAPI_PROC(void,SDL_DestroyGPURenderState,(SDL_GPURenderState *a),(a),) SDL_DYNAPI_PROC(void,SDL_DestroyGPURenderState,(SDL_GPURenderState *a),(a),)

View File

@@ -5948,23 +5948,17 @@ bool SDL_GetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode *scale
return true; return true;
} }
SDL_GPURenderState *SDL_CreateGPURenderState(SDL_Renderer *renderer, SDL_GPURenderStateDesc *desc) SDL_GPURenderState *SDL_CreateGPURenderState(SDL_Renderer *renderer, SDL_GPURenderStateCreateInfo *createinfo)
{ {
CHECK_RENDERER_MAGIC(renderer, NULL); CHECK_RENDERER_MAGIC(renderer, NULL);
if (!desc) { if (!createinfo) {
SDL_InvalidParamError("desc"); SDL_InvalidParamError("createinfo");
return NULL; return NULL;
} }
if (desc->version < sizeof(*desc)) { if (!createinfo->fragment_shader) {
// Update this to handle older versions of this interface SDL_SetError("A fragment_shader is required");
SDL_SetError("Invalid desc, should be initialized with SDL_INIT_INTERFACE()");
return NULL;
}
if (!desc->fragment_shader) {
SDL_SetError("desc->fragment_shader is required");
return NULL; return NULL;
} }
@@ -5980,36 +5974,36 @@ SDL_GPURenderState *SDL_CreateGPURenderState(SDL_Renderer *renderer, SDL_GPURend
} }
state->renderer = renderer; state->renderer = renderer;
state->fragment_shader = desc->fragment_shader; state->fragment_shader = createinfo->fragment_shader;
if (desc->num_sampler_bindings > 0) { if (createinfo->num_sampler_bindings > 0) {
state->sampler_bindings = (SDL_GPUTextureSamplerBinding *)SDL_calloc(desc->num_sampler_bindings, sizeof(*state->sampler_bindings)); state->sampler_bindings = (SDL_GPUTextureSamplerBinding *)SDL_calloc(createinfo->num_sampler_bindings, sizeof(*state->sampler_bindings));
if (!state->sampler_bindings) { if (!state->sampler_bindings) {
SDL_DestroyGPURenderState(state); SDL_DestroyGPURenderState(state);
return NULL; return NULL;
} }
SDL_memcpy(state->sampler_bindings, desc->sampler_bindings, desc->num_sampler_bindings * sizeof(*state->sampler_bindings)); SDL_memcpy(state->sampler_bindings, createinfo->sampler_bindings, createinfo->num_sampler_bindings * sizeof(*state->sampler_bindings));
state->num_sampler_bindings = desc->num_sampler_bindings; state->num_sampler_bindings = createinfo->num_sampler_bindings;
} }
if (desc->num_storage_textures > 0) { if (createinfo->num_storage_textures > 0) {
state->storage_textures = (SDL_GPUTexture **)SDL_calloc(desc->num_storage_textures, sizeof(*state->storage_textures)); state->storage_textures = (SDL_GPUTexture **)SDL_calloc(createinfo->num_storage_textures, sizeof(*state->storage_textures));
if (!state->storage_textures) { if (!state->storage_textures) {
SDL_DestroyGPURenderState(state); SDL_DestroyGPURenderState(state);
return NULL; return NULL;
} }
SDL_memcpy(state->storage_textures, desc->storage_textures, desc->num_storage_textures * sizeof(*state->storage_textures)); SDL_memcpy(state->storage_textures, createinfo->storage_textures, createinfo->num_storage_textures * sizeof(*state->storage_textures));
state->num_storage_textures = desc->num_storage_textures; state->num_storage_textures = createinfo->num_storage_textures;
} }
if (desc->num_storage_buffers > 0) { if (createinfo->num_storage_buffers > 0) {
state->storage_buffers = (SDL_GPUBuffer **)SDL_calloc(desc->num_storage_buffers, sizeof(*state->storage_buffers)); state->storage_buffers = (SDL_GPUBuffer **)SDL_calloc(createinfo->num_storage_buffers, sizeof(*state->storage_buffers));
if (!state->storage_buffers) { if (!state->storage_buffers) {
SDL_DestroyGPURenderState(state); SDL_DestroyGPURenderState(state);
return NULL; return NULL;
} }
SDL_memcpy(state->storage_buffers, desc->storage_buffers, desc->num_storage_buffers * sizeof(*state->storage_buffers)); SDL_memcpy(state->storage_buffers, createinfo->storage_buffers, createinfo->num_storage_buffers * sizeof(*state->storage_buffers));
state->num_storage_buffers = desc->num_storage_buffers; state->num_storage_buffers = createinfo->num_storage_buffers;
} }
return state; return state;

View File

@@ -46,7 +46,7 @@ typedef enum
NUM_EFFECTS NUM_EFFECTS
} FullscreenEffect; } FullscreenEffect;
typedef struct typedef struct
{ {
const char *name; const char *name;
const unsigned char *dxil_shader_source; const unsigned char *dxil_shader_source;
@@ -61,7 +61,7 @@ typedef struct
SDL_GPURenderState *state; SDL_GPURenderState *state;
} FullscreenEffectData; } FullscreenEffectData;
typedef struct typedef struct
{ {
float texture_width; float texture_width;
float texture_height; float texture_height;
@@ -145,7 +145,7 @@ static bool InitGPURenderState(void)
{ {
SDL_GPUShaderFormat formats; SDL_GPUShaderFormat formats;
SDL_GPUShaderCreateInfo info; SDL_GPUShaderCreateInfo info;
SDL_GPURenderStateDesc desc; SDL_GPURenderStateCreateInfo createinfo;
int i; int i;
formats = SDL_GetGPUShaderFormats(device); formats = SDL_GetGPUShaderFormats(device);
@@ -187,9 +187,9 @@ static bool InitGPURenderState(void)
return false; return false;
} }
SDL_INIT_INTERFACE(&desc); SDL_zero(createinfo);
desc.fragment_shader = data->shader; createinfo.fragment_shader = data->shader;
data->state = SDL_CreateGPURenderState(renderer, &desc); data->state = SDL_CreateGPURenderState(renderer, &createinfo);
if (!data->state) { if (!data->state) {
SDL_Log("Couldn't create render state: %s", SDL_GetError()); SDL_Log("Couldn't create render state: %s", SDL_GetError());
return false; return false;

View File

@@ -164,7 +164,7 @@ static bool InitGPURenderState(void)
{ {
SDL_GPUShaderFormat formats; SDL_GPUShaderFormat formats;
SDL_GPUShaderCreateInfo info; SDL_GPUShaderCreateInfo info;
SDL_GPURenderStateDesc desc; SDL_GPURenderStateCreateInfo createinfo;
MSDFShaderUniforms uniforms; MSDFShaderUniforms uniforms;
device = (SDL_GPUDevice *)SDL_GetPointerProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_GPU_DEVICE_POINTER, NULL); device = (SDL_GPUDevice *)SDL_GetPointerProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_GPU_DEVICE_POINTER, NULL);
@@ -205,9 +205,9 @@ static bool InitGPURenderState(void)
return false; return false;
} }
SDL_INIT_INTERFACE(&desc); SDL_zero(createinfo);
desc.fragment_shader = shader; createinfo.fragment_shader = shader;
render_state = SDL_CreateGPURenderState(renderer, &desc); render_state = SDL_CreateGPURenderState(renderer, &createinfo);
if (!render_state) { if (!render_state) {
SDL_Log("Couldn't create render state: %s", SDL_GetError()); SDL_Log("Couldn't create render state: %s", SDL_GetError());
return false; return false;