Skip to content
Snippets Groups Projects
Commit 03992961 authored by Antonio Ospite's avatar Antonio Ospite
Browse files

Factor out a loadShaderCode() function

parent aee6b3e3
Branches
No related tags found
No related merge requests found
...@@ -310,6 +310,20 @@ namespace vks ...@@ -310,6 +310,20 @@ namespace vks
exitFatal(message, (int32_t)resultCode); exitFatal(message, (int32_t)resultCode);
} }
VkShaderModule loadShaderCode(const char *shaderCode, size_t size, VkDevice device) {
assert(size > 0);
VkShaderModule shaderModule;
VkShaderModuleCreateInfo moduleCreateInfo{};
moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
moduleCreateInfo.codeSize = size;
moduleCreateInfo.pCode = (uint32_t*)shaderCode;
VK_CHECK_RESULT(vkCreateShaderModule(device, &moduleCreateInfo, NULL, &shaderModule));
return shaderModule;
}
#if defined(__ANDROID__) #if defined(__ANDROID__)
// Android shaders are stored as assets in the apk // Android shaders are stored as assets in the apk
// So they need to be loaded via the asset manager // So they need to be loaded via the asset manager
...@@ -325,15 +339,7 @@ namespace vks ...@@ -325,15 +339,7 @@ namespace vks
AAsset_read(asset, shaderCode, size); AAsset_read(asset, shaderCode, size);
AAsset_close(asset); AAsset_close(asset);
VkShaderModule shaderModule; VkShaderModule shaderModule = loadShaderCode(shaderCode, size, device);
VkShaderModuleCreateInfo moduleCreateInfo;
moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
moduleCreateInfo.pNext = NULL;
moduleCreateInfo.codeSize = size;
moduleCreateInfo.pCode = (uint32_t*)shaderCode;
moduleCreateInfo.flags = 0;
VK_CHECK_RESULT(vkCreateShaderModule(device, &moduleCreateInfo, NULL, &shaderModule));
delete[] shaderCode; delete[] shaderCode;
...@@ -354,13 +360,7 @@ namespace vks ...@@ -354,13 +360,7 @@ namespace vks
assert(size > 0); assert(size > 0);
VkShaderModule shaderModule; VkShaderModule shaderModule = loadShaderCode(shaderCode, size, device);
VkShaderModuleCreateInfo moduleCreateInfo{};
moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
moduleCreateInfo.codeSize = size;
moduleCreateInfo.pCode = (uint32_t*)shaderCode;
VK_CHECK_RESULT(vkCreateShaderModule(device, &moduleCreateInfo, NULL, &shaderModule));
delete[] shaderCode; delete[] shaderCode;
......
...@@ -116,6 +116,9 @@ namespace vks ...@@ -116,6 +116,9 @@ namespace vks
void exitFatal(const std::string& message, int32_t exitCode); void exitFatal(const std::string& message, int32_t exitCode);
void exitFatal(const std::string& message, VkResult resultCode); void exitFatal(const std::string& message, VkResult resultCode);
// Load a SPIR-V shader (binary, from a string)
VkShaderModule loadShaderCode(const char *shaderCode, size_t size, VkDevice device);
// Load a SPIR-V shader (binary) // Load a SPIR-V shader (binary)
#if defined(__ANDROID__) #if defined(__ANDROID__)
VkShaderModule loadShader(AAssetManager* assetManager, const char *fileName, VkDevice device); VkShaderModule loadShader(AAssetManager* assetManager, const char *fileName, VkDevice device);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment