mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-05 19:08:12 +00:00
Set a default shader entry point
The default should be the entrypoint generated by SDL_shadercross. That way it doesn't need to be hand-specified in the common workflow.
(cherry picked from commit dcb97a5f49
)
This commit is contained in:
@@ -8103,7 +8103,6 @@ static void D3D12_INTERNAL_InitBlitResources(
|
||||
shaderCreateInfo.code_size = sizeof(D3D12_FullscreenVert);
|
||||
shaderCreateInfo.stage = SDL_GPU_SHADERSTAGE_VERTEX;
|
||||
shaderCreateInfo.format = SDL_GPU_SHADERFORMAT_DXBC;
|
||||
shaderCreateInfo.entrypoint = "main";
|
||||
|
||||
renderer->blitVertexShader = D3D12_CreateShader(
|
||||
(SDL_GPURenderer *)renderer,
|
||||
|
@@ -840,6 +840,10 @@ static MetalLibraryFunction METAL_INTERNAL_CompileShader(
|
||||
dispatch_data_t data;
|
||||
id<MTLFunction> function;
|
||||
|
||||
if (!entrypoint) {
|
||||
entrypoint = "main0";
|
||||
}
|
||||
|
||||
if (format == SDL_GPU_SHADERFORMAT_MSL) {
|
||||
NSString *codeString = [[NSString alloc]
|
||||
initWithBytes:code
|
||||
|
@@ -606,7 +606,7 @@ typedef struct VulkanSampler
|
||||
typedef struct VulkanShader
|
||||
{
|
||||
VkShaderModule shaderModule;
|
||||
const char *entrypointName;
|
||||
char *entrypointName;
|
||||
SDL_GPUShaderStage stage;
|
||||
Uint32 numSamplers;
|
||||
Uint32 numStorageTextures;
|
||||
@@ -3175,7 +3175,7 @@ static void VULKAN_INTERNAL_DestroyShader(
|
||||
vulkanShader->shaderModule,
|
||||
NULL);
|
||||
|
||||
SDL_free((void *)vulkanShader->entrypointName);
|
||||
SDL_free(vulkanShader->entrypointName);
|
||||
SDL_free(vulkanShader);
|
||||
}
|
||||
|
||||
@@ -6694,7 +6694,6 @@ static SDL_GPUShader *VULKAN_CreateShader(
|
||||
VkResult vulkanResult;
|
||||
VkShaderModuleCreateInfo vkShaderModuleCreateInfo;
|
||||
VulkanRenderer *renderer = (VulkanRenderer *)driverData;
|
||||
size_t entryPointNameLength;
|
||||
|
||||
vulkanShader = SDL_malloc(sizeof(VulkanShader));
|
||||
vkShaderModuleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
||||
@@ -6714,10 +6713,11 @@ static SDL_GPUShader *VULKAN_CreateShader(
|
||||
CHECK_VULKAN_ERROR_AND_RETURN(vulkanResult, vkCreateShaderModule, NULL);
|
||||
}
|
||||
|
||||
entryPointNameLength = SDL_strlen(createinfo->entrypoint) + 1;
|
||||
vulkanShader->entrypointName = SDL_malloc(entryPointNameLength);
|
||||
SDL_utf8strlcpy((char *)vulkanShader->entrypointName, createinfo->entrypoint, entryPointNameLength);
|
||||
|
||||
const char *entrypoint = createinfo->entrypoint;
|
||||
if (!entrypoint) {
|
||||
entrypoint = "main";
|
||||
}
|
||||
vulkanShader->entrypointName = SDL_strdup(entrypoint);
|
||||
vulkanShader->stage = createinfo->stage;
|
||||
vulkanShader->numSamplers = createinfo->num_samplers;
|
||||
vulkanShader->numStorageTextures = createinfo->num_storage_textures;
|
||||
|
Reference in New Issue
Block a user