| Index: src/gpu/vk/GrVkPipelineStateBuilder.cpp | 
| diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.cpp b/src/gpu/vk/GrVkPipelineStateBuilder.cpp | 
| index 3b077f0125c19307cd436a9679268f1a9d0e6337..f4bb566de1588d5a70983c38b60b8628dfcf173d 100644 | 
| --- a/src/gpu/vk/GrVkPipelineStateBuilder.cpp | 
| +++ b/src/gpu/vk/GrVkPipelineStateBuilder.cpp | 
| @@ -89,41 +89,52 @@ bool GrVkPipelineStateBuilder::CreateVkShaderModule(const GrVkGpu* gpu, | 
| } | 
| } | 
|  | 
| -    shaderc_compiler_t compiler = gpu->shadercCompiler(); | 
| - | 
| -    shaderc_compile_options_t options = shaderc_compile_options_initialize(); | 
| -    shaderc_compile_options_set_forced_version_profile(options, 140, shaderc_profile_none); | 
| - | 
| -    shaderc_shader_kind shadercStage = vk_shader_stage_to_shaderc_kind(stage); | 
| -    shaderc_compilation_result_t result = shaderc_compile_into_spv(compiler, | 
| -                                                                   shaderString.c_str(), | 
| -                                                                   strlen(shaderString.c_str()), | 
| -                                                                   shadercStage, | 
| -                                                                   "shader", | 
| -                                                                   "main", | 
| -                                                                   options); | 
| -    shaderc_compile_options_release(options); | 
| -#ifdef SK_DEBUG | 
| -    if (shaderc_result_get_num_errors(result)) { | 
| -        SkDebugf("%s\n", shaderString.c_str()); | 
| -        SkDebugf("%s\n", shaderc_result_get_error_message(result)); | 
| -        return false; | 
| -    } | 
| -#endif | 
| - | 
| VkShaderModuleCreateInfo moduleCreateInfo; | 
| memset(&moduleCreateInfo, 0, sizeof(VkShaderModuleCreateInfo)); | 
| moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; | 
| moduleCreateInfo.pNext = nullptr; | 
| moduleCreateInfo.flags = 0; | 
| -    moduleCreateInfo.codeSize = shaderc_result_get_length(result); | 
| -    moduleCreateInfo.pCode = (const uint32_t*)shaderc_result_get_bytes(result); | 
| + | 
| +    shaderc_compilation_result_t result; | 
| + | 
| +    if (gpu->vkCaps().canUseGLSLForShaderModule()) { | 
| +        moduleCreateInfo.codeSize = strlen(shaderString.c_str()); | 
| +        moduleCreateInfo.pCode = (const uint32_t*)shaderString.c_str(); | 
| +    } else { | 
| + | 
| +        shaderc_compiler_t compiler = gpu->shadercCompiler(); | 
| + | 
| +        shaderc_compile_options_t options = shaderc_compile_options_initialize(); | 
| +        shaderc_compile_options_set_forced_version_profile(options, 140, shaderc_profile_none); | 
| + | 
| +        shaderc_shader_kind shadercStage = vk_shader_stage_to_shaderc_kind(stage); | 
| +        result = shaderc_compile_into_spv(compiler, | 
| +                                          shaderString.c_str(), | 
| +                                          strlen(shaderString.c_str()), | 
| +                                          shadercStage, | 
| +                                          "shader", | 
| +                                          "main", | 
| +                                          options); | 
| +        shaderc_compile_options_release(options); | 
| +#ifdef SK_DEBUG | 
| +        if (shaderc_result_get_num_errors(result)) { | 
| +            SkDebugf("%s\n", shaderString.c_str()); | 
| +            SkDebugf("%s\n", shaderc_result_get_error_message(result)); | 
| +            return false; | 
| +        } | 
| +#endif | 
| + | 
| +        moduleCreateInfo.codeSize = shaderc_result_get_length(result); | 
| +        moduleCreateInfo.pCode = (const uint32_t*)shaderc_result_get_bytes(result); | 
| +    } | 
|  | 
| VkResult err = GR_VK_CALL(gpu->vkInterface(), CreateShaderModule(gpu->device(), | 
| &moduleCreateInfo, | 
| nullptr, | 
| shaderModule)); | 
| -    shaderc_result_release(result); | 
| +    if (!gpu->vkCaps().canUseGLSLForShaderModule()) { | 
| +        shaderc_result_release(result); | 
| +    } | 
| if (err) { | 
| return false; | 
| } | 
|  |