diff --git a/src/gpu/d3d12/SDL_gpu_d3d12.c b/src/gpu/d3d12/SDL_gpu_d3d12.c index efd582ec5b..19601ff0b6 100644 --- a/src/gpu/d3d12/SDL_gpu_d3d12.c +++ b/src/gpu/d3d12/SDL_gpu_d3d12.c @@ -8056,7 +8056,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, diff --git a/src/gpu/metal/SDL_gpu_metal.m b/src/gpu/metal/SDL_gpu_metal.m index 365b344806..9371ffa3d4 100644 --- a/src/gpu/metal/SDL_gpu_metal.m +++ b/src/gpu/metal/SDL_gpu_metal.m @@ -840,6 +840,10 @@ static MetalLibraryFunction METAL_INTERNAL_CompileShader( dispatch_data_t data; id function; + if (!entrypoint) { + entrypoint = "main0"; + } + if (format == SDL_GPU_SHADERFORMAT_MSL) { NSString *codeString = [[NSString alloc] initWithBytes:code diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c index cb3236cafe..494cf95e72 100644 --- a/src/gpu/vulkan/SDL_gpu_vulkan.c +++ b/src/gpu/vulkan/SDL_gpu_vulkan.c @@ -577,7 +577,7 @@ typedef struct VulkanSampler typedef struct VulkanShader { VkShaderModule shaderModule; - const char *entrypointName; + char *entrypointName; SDL_GPUShaderStage stage; Uint32 numSamplers; Uint32 numStorageTextures; @@ -3115,7 +3115,7 @@ static void VULKAN_INTERNAL_DestroyShader( vulkanShader->shaderModule, NULL); - SDL_free((void *)vulkanShader->entrypointName); + SDL_free(vulkanShader->entrypointName); SDL_free(vulkanShader); } @@ -6620,7 +6620,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; @@ -6640,10 +6639,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; diff --git a/test/testgpurender_effects.c b/test/testgpurender_effects.c index 9a725b8969..efda081712 100644 --- a/test/testgpurender_effects.c +++ b/test/testgpurender_effects.c @@ -172,17 +172,14 @@ static bool InitGPURenderState(void) info.format = SDL_GPU_SHADERFORMAT_SPIRV; info.code = data->spirv_shader_source; info.code_size = data->spirv_shader_source_len; - info.entrypoint = "main"; } else if (formats & SDL_GPU_SHADERFORMAT_DXIL) { info.format = SDL_GPU_SHADERFORMAT_DXIL; info.code = data->dxil_shader_source; info.code_size = data->dxil_shader_source_len; - info.entrypoint = "main"; } else if (formats & SDL_GPU_SHADERFORMAT_MSL) { info.format = SDL_GPU_SHADERFORMAT_MSL; info.code = data->msl_shader_source; info.code_size = data->msl_shader_source_len; - info.entrypoint = "main0"; } else { SDL_Log("No supported shader format found"); return false; diff --git a/test/testgpurender_msdf.c b/test/testgpurender_msdf.c index 982b27ae6a..a822f9e385 100644 --- a/test/testgpurender_msdf.c +++ b/test/testgpurender_msdf.c @@ -184,17 +184,14 @@ static bool InitGPURenderState(void) info.format = SDL_GPU_SHADERFORMAT_SPIRV; info.code = testgpurender_msdf_frag_spv; info.code_size = testgpurender_msdf_frag_spv_len; - info.entrypoint = "main"; } else if (formats & SDL_GPU_SHADERFORMAT_DXIL) { info.format = SDL_GPU_SHADERFORMAT_DXIL; info.code = testgpurender_msdf_frag_dxil; info.code_size = testgpurender_msdf_frag_dxil_len; - info.entrypoint = "main"; } else if (formats & SDL_GPU_SHADERFORMAT_MSL) { info.format = SDL_GPU_SHADERFORMAT_MSL; info.code = testgpurender_msdf_frag_msl; info.code_size = testgpurender_msdf_frag_msl_len; - info.entrypoint = "main0"; } else { SDL_Log("No supported shader format found"); return false;