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.
This commit is contained in:
parent
1a2fccc56a
commit
dcb97a5f49
5 changed files with 11 additions and 14 deletions
|
@ -8056,7 +8056,6 @@ static void D3D12_INTERNAL_InitBlitResources(
|
||||||
shaderCreateInfo.code_size = sizeof(D3D12_FullscreenVert);
|
shaderCreateInfo.code_size = sizeof(D3D12_FullscreenVert);
|
||||||
shaderCreateInfo.stage = SDL_GPU_SHADERSTAGE_VERTEX;
|
shaderCreateInfo.stage = SDL_GPU_SHADERSTAGE_VERTEX;
|
||||||
shaderCreateInfo.format = SDL_GPU_SHADERFORMAT_DXBC;
|
shaderCreateInfo.format = SDL_GPU_SHADERFORMAT_DXBC;
|
||||||
shaderCreateInfo.entrypoint = "main";
|
|
||||||
|
|
||||||
renderer->blitVertexShader = D3D12_CreateShader(
|
renderer->blitVertexShader = D3D12_CreateShader(
|
||||||
(SDL_GPURenderer *)renderer,
|
(SDL_GPURenderer *)renderer,
|
||||||
|
|
|
@ -840,6 +840,10 @@ static MetalLibraryFunction METAL_INTERNAL_CompileShader(
|
||||||
dispatch_data_t data;
|
dispatch_data_t data;
|
||||||
id<MTLFunction> function;
|
id<MTLFunction> function;
|
||||||
|
|
||||||
|
if (!entrypoint) {
|
||||||
|
entrypoint = "main0";
|
||||||
|
}
|
||||||
|
|
||||||
if (format == SDL_GPU_SHADERFORMAT_MSL) {
|
if (format == SDL_GPU_SHADERFORMAT_MSL) {
|
||||||
NSString *codeString = [[NSString alloc]
|
NSString *codeString = [[NSString alloc]
|
||||||
initWithBytes:code
|
initWithBytes:code
|
||||||
|
|
|
@ -577,7 +577,7 @@ typedef struct VulkanSampler
|
||||||
typedef struct VulkanShader
|
typedef struct VulkanShader
|
||||||
{
|
{
|
||||||
VkShaderModule shaderModule;
|
VkShaderModule shaderModule;
|
||||||
const char *entrypointName;
|
char *entrypointName;
|
||||||
SDL_GPUShaderStage stage;
|
SDL_GPUShaderStage stage;
|
||||||
Uint32 numSamplers;
|
Uint32 numSamplers;
|
||||||
Uint32 numStorageTextures;
|
Uint32 numStorageTextures;
|
||||||
|
@ -3115,7 +3115,7 @@ static void VULKAN_INTERNAL_DestroyShader(
|
||||||
vulkanShader->shaderModule,
|
vulkanShader->shaderModule,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
SDL_free((void *)vulkanShader->entrypointName);
|
SDL_free(vulkanShader->entrypointName);
|
||||||
SDL_free(vulkanShader);
|
SDL_free(vulkanShader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6620,7 +6620,6 @@ static SDL_GPUShader *VULKAN_CreateShader(
|
||||||
VkResult vulkanResult;
|
VkResult vulkanResult;
|
||||||
VkShaderModuleCreateInfo vkShaderModuleCreateInfo;
|
VkShaderModuleCreateInfo vkShaderModuleCreateInfo;
|
||||||
VulkanRenderer *renderer = (VulkanRenderer *)driverData;
|
VulkanRenderer *renderer = (VulkanRenderer *)driverData;
|
||||||
size_t entryPointNameLength;
|
|
||||||
|
|
||||||
vulkanShader = SDL_malloc(sizeof(VulkanShader));
|
vulkanShader = SDL_malloc(sizeof(VulkanShader));
|
||||||
vkShaderModuleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
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);
|
CHECK_VULKAN_ERROR_AND_RETURN(vulkanResult, vkCreateShaderModule, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
entryPointNameLength = SDL_strlen(createinfo->entrypoint) + 1;
|
const char *entrypoint = createinfo->entrypoint;
|
||||||
vulkanShader->entrypointName = SDL_malloc(entryPointNameLength);
|
if (!entrypoint) {
|
||||||
SDL_utf8strlcpy((char *)vulkanShader->entrypointName, createinfo->entrypoint, entryPointNameLength);
|
entrypoint = "main";
|
||||||
|
}
|
||||||
|
vulkanShader->entrypointName = SDL_strdup(entrypoint);
|
||||||
vulkanShader->stage = createinfo->stage;
|
vulkanShader->stage = createinfo->stage;
|
||||||
vulkanShader->numSamplers = createinfo->num_samplers;
|
vulkanShader->numSamplers = createinfo->num_samplers;
|
||||||
vulkanShader->numStorageTextures = createinfo->num_storage_textures;
|
vulkanShader->numStorageTextures = createinfo->num_storage_textures;
|
||||||
|
|
|
@ -172,17 +172,14 @@ static bool InitGPURenderState(void)
|
||||||
info.format = SDL_GPU_SHADERFORMAT_SPIRV;
|
info.format = SDL_GPU_SHADERFORMAT_SPIRV;
|
||||||
info.code = data->spirv_shader_source;
|
info.code = data->spirv_shader_source;
|
||||||
info.code_size = data->spirv_shader_source_len;
|
info.code_size = data->spirv_shader_source_len;
|
||||||
info.entrypoint = "main";
|
|
||||||
} else if (formats & SDL_GPU_SHADERFORMAT_DXIL) {
|
} else if (formats & SDL_GPU_SHADERFORMAT_DXIL) {
|
||||||
info.format = SDL_GPU_SHADERFORMAT_DXIL;
|
info.format = SDL_GPU_SHADERFORMAT_DXIL;
|
||||||
info.code = data->dxil_shader_source;
|
info.code = data->dxil_shader_source;
|
||||||
info.code_size = data->dxil_shader_source_len;
|
info.code_size = data->dxil_shader_source_len;
|
||||||
info.entrypoint = "main";
|
|
||||||
} else if (formats & SDL_GPU_SHADERFORMAT_MSL) {
|
} else if (formats & SDL_GPU_SHADERFORMAT_MSL) {
|
||||||
info.format = SDL_GPU_SHADERFORMAT_MSL;
|
info.format = SDL_GPU_SHADERFORMAT_MSL;
|
||||||
info.code = data->msl_shader_source;
|
info.code = data->msl_shader_source;
|
||||||
info.code_size = data->msl_shader_source_len;
|
info.code_size = data->msl_shader_source_len;
|
||||||
info.entrypoint = "main0";
|
|
||||||
} else {
|
} else {
|
||||||
SDL_Log("No supported shader format found");
|
SDL_Log("No supported shader format found");
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -184,17 +184,14 @@ static bool InitGPURenderState(void)
|
||||||
info.format = SDL_GPU_SHADERFORMAT_SPIRV;
|
info.format = SDL_GPU_SHADERFORMAT_SPIRV;
|
||||||
info.code = testgpurender_msdf_frag_spv;
|
info.code = testgpurender_msdf_frag_spv;
|
||||||
info.code_size = testgpurender_msdf_frag_spv_len;
|
info.code_size = testgpurender_msdf_frag_spv_len;
|
||||||
info.entrypoint = "main";
|
|
||||||
} else if (formats & SDL_GPU_SHADERFORMAT_DXIL) {
|
} else if (formats & SDL_GPU_SHADERFORMAT_DXIL) {
|
||||||
info.format = SDL_GPU_SHADERFORMAT_DXIL;
|
info.format = SDL_GPU_SHADERFORMAT_DXIL;
|
||||||
info.code = testgpurender_msdf_frag_dxil;
|
info.code = testgpurender_msdf_frag_dxil;
|
||||||
info.code_size = testgpurender_msdf_frag_dxil_len;
|
info.code_size = testgpurender_msdf_frag_dxil_len;
|
||||||
info.entrypoint = "main";
|
|
||||||
} else if (formats & SDL_GPU_SHADERFORMAT_MSL) {
|
} else if (formats & SDL_GPU_SHADERFORMAT_MSL) {
|
||||||
info.format = SDL_GPU_SHADERFORMAT_MSL;
|
info.format = SDL_GPU_SHADERFORMAT_MSL;
|
||||||
info.code = testgpurender_msdf_frag_msl;
|
info.code = testgpurender_msdf_frag_msl;
|
||||||
info.code_size = testgpurender_msdf_frag_msl_len;
|
info.code_size = testgpurender_msdf_frag_msl_len;
|
||||||
info.entrypoint = "main0";
|
|
||||||
} else {
|
} else {
|
||||||
SDL_Log("No supported shader format found");
|
SDL_Log("No supported shader format found");
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue