OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "gpu/vulkan/tests/basic_vulkan_test.h" |
| 6 #include "gpu/vulkan/vulkan_shader_module.h" |
| 7 |
| 8 // This file tests basic shader module functionality. |
| 9 |
| 10 namespace gpu { |
| 11 |
| 12 class ShaderModuleTest : public BasicVulkanTest {}; |
| 13 |
| 14 TEST_F(ShaderModuleTest, BasicGLSLVertexShader) { |
| 15 const VulkanShaderModule::ShaderType kShaderType = |
| 16 VulkanShaderModule::ShaderType::VERTEX; |
| 17 const std::string kShaderName = "Basic Vertex Shader"; |
| 18 const std::string kShaderEntry = "main"; |
| 19 const std::string kShaderSource = |
| 20 "#version 150\n" |
| 21 "void main() {\n" |
| 22 " gl_Position = vec4(1.0, 1.0, 1.0, 1.0);\n" |
| 23 "}"; |
| 24 |
| 25 VulkanShaderModule vertex_shader_module(GetDeviceQueue()); |
| 26 EXPECT_TRUE(vertex_shader_module.InitializeGLSL(kShaderType, kShaderName, |
| 27 kShaderEntry, kShaderSource)); |
| 28 EXPECT_TRUE(vertex_shader_module.IsValid()); |
| 29 EXPECT_EQ(kShaderType, vertex_shader_module.shader_type()); |
| 30 EXPECT_EQ(kShaderName, vertex_shader_module.name()); |
| 31 EXPECT_EQ(kShaderEntry, vertex_shader_module.entry_point()); |
| 32 vertex_shader_module.Destroy(); |
| 33 |
| 34 EXPECT_FALSE(vertex_shader_module.IsValid()); |
| 35 } |
| 36 |
| 37 TEST_F(ShaderModuleTest, BasicGLSLFragmentShader) { |
| 38 const VulkanShaderModule::ShaderType kShaderType = |
| 39 VulkanShaderModule::ShaderType::FRAGMENT; |
| 40 const std::string kShaderName = "Basic Fragment Shader"; |
| 41 const std::string kShaderEntry = "main"; |
| 42 const std::string kShaderSource = |
| 43 "#version 150\n" |
| 44 "out vec4 colorOut;\n" |
| 45 "void main() {\n" |
| 46 " colorOut = vec4(1.0, 1.0, 1.0, 1.0);\n" |
| 47 "}"; |
| 48 |
| 49 VulkanShaderModule frag_shader_module(GetDeviceQueue()); |
| 50 EXPECT_TRUE(frag_shader_module.InitializeGLSL(kShaderType, kShaderName, |
| 51 kShaderEntry, kShaderSource)); |
| 52 EXPECT_TRUE(frag_shader_module.IsValid()); |
| 53 EXPECT_EQ(kShaderType, frag_shader_module.shader_type()); |
| 54 EXPECT_EQ(kShaderName, frag_shader_module.name()); |
| 55 EXPECT_EQ(kShaderEntry, frag_shader_module.entry_point()); |
| 56 frag_shader_module.Destroy(); |
| 57 |
| 58 EXPECT_FALSE(frag_shader_module.IsValid()); |
| 59 } |
| 60 |
| 61 TEST_F(ShaderModuleTest, BasicGLSLError) { |
| 62 const VulkanShaderModule::ShaderType kShaderType = |
| 63 VulkanShaderModule::ShaderType::VERTEX; |
| 64 const std::string kShaderName = "Basic Fragment Shader"; |
| 65 const std::string kShaderEntry = "main"; |
| 66 const std::string kShaderSource = |
| 67 "#version 150\n" |
| 68 "void main() {\n" |
| 69 " typo\n" |
| 70 "}"; |
| 71 |
| 72 VulkanShaderModule vertex_shader_module(GetDeviceQueue()); |
| 73 EXPECT_FALSE(vertex_shader_module.InitializeGLSL( |
| 74 kShaderType, kShaderName, kShaderEntry, kShaderSource)); |
| 75 EXPECT_FALSE(vertex_shader_module.IsValid()); |
| 76 EXPECT_FALSE(vertex_shader_module.GetErrorMessages().empty()); |
| 77 vertex_shader_module.Destroy(); |
| 78 } |
| 79 |
| 80 } // namespace gpu |
OLD | NEW |