1 #ifndef _VKTDYNAMICSTATEBASECLASS_HPP 2 #define _VKTDYNAMICSTATEBASECLASS_HPP 3 /*------------------------------------------------------------------------ 4 * Vulkan Conformance Tests 5 * ------------------------ 6 * 7 * Copyright (c) 2015 The Khronos Group Inc. 8 * Copyright (c) 2015 Intel Corporation 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); 11 * you may not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 * 22 *//*! 23 * \file 24 * \brief Dynamic State Tests - Base Class 25 *//*--------------------------------------------------------------------*/ 26 27 #include "tcuDefs.hpp" 28 #include "vktTestCase.hpp" 29 30 #include "vktDynamicStateTestCaseUtil.hpp" 31 #include "vktDynamicStateImageObjectUtil.hpp" 32 #include "vktDynamicStateBufferObjectUtil.hpp" 33 #include "vktDynamicStateCreateInfoUtil.hpp" 34 35 namespace vkt 36 { 37 namespace DynamicState 38 { 39 40 class DynamicStateBaseClass : public TestInstance 41 { 42 public: 43 DynamicStateBaseClass (Context& context, const char* vertexShaderName, const char* fragmentShaderName); 44 45 protected: 46 void initialize (void); 47 48 virtual void initPipeline (const vk::VkDevice device); 49 50 virtual tcu::TestStatus iterate (void); 51 52 void beginRenderPass (void); 53 54 void beginRenderPassWithClearColor (const vk::VkClearColorValue& clearColor); 55 56 void setDynamicViewportState (const deUint32 width, 57 const deUint32 height); 58 59 void setDynamicViewportState (deUint32 viewportCount, 60 const vk::VkViewport* pViewports, 61 const vk::VkRect2D* pScissors); 62 63 void setDynamicRasterizationState (const float lineWidth = 1.0f, 64 const float depthBiasConstantFactor = 0.0f, 65 const float depthBiasClamp = 0.0f, 66 const float depthBiasSlopeFactor = 0.0f); 67 68 void setDynamicBlendState (const float const1 = 0.0f, const float const2 = 0.0f, 69 const float const3 = 0.0f, const float const4 = 0.0f); 70 71 void setDynamicDepthStencilState (const float minDepthBounds = -1.0f, 72 const float maxDepthBounds = 1.0f, 73 const deUint32 stencilFrontCompareMask = 0xffffffffu, 74 const deUint32 stencilFrontWriteMask = 0xffffffffu, 75 const deUint32 stencilFrontReference = 0, 76 const deUint32 stencilBackCompareMask = 0xffffffffu, 77 const deUint32 stencilBackWriteMask = 0xffffffffu, 78 const deUint32 stencilBackReference = 0); 79 enum 80 { 81 WIDTH = 128, 82 HEIGHT = 128 83 }; 84 85 vk::VkFormat m_colorAttachmentFormat; 86 87 vk::VkPrimitiveTopology m_topology; 88 89 const vk::DeviceInterface& m_vk; 90 91 vk::Move<vk::VkPipeline> m_pipeline; 92 vk::Move<vk::VkPipelineLayout> m_pipelineLayout; 93 94 de::SharedPtr<Image> m_colorTargetImage; 95 vk::Move<vk::VkImageView> m_colorTargetView; 96 97 PipelineCreateInfo::VertexInputState m_vertexInputState; 98 de::SharedPtr<Buffer> m_vertexBuffer; 99 100 vk::Move<vk::VkCommandPool> m_cmdPool; 101 vk::Move<vk::VkCommandBuffer> m_cmdBuffer; 102 103 vk::Move<vk::VkFramebuffer> m_framebuffer; 104 vk::Move<vk::VkRenderPass> m_renderPass; 105 106 const std::string m_vertexShaderName; 107 const std::string m_fragmentShaderName; 108 std::vector<PositionColorVertex> m_data; 109 }; 110 111 } // DynamicState 112 } // vkt 113 114 #endif // _VKTDYNAMICSTATEBASECLASS_HPP 115