1 #ifndef _TCUNULLWSPLATFORM_HPP 2 #define _TCUNULLWSPLATFORM_HPP 3 /*------------------------------------------------------------------------- 4 * OpenGL Conformance Test Suite 5 * ----------------------------- 6 * 7 * Copyright (c) 2016 Google Inc. 8 * Copyright (c) 2016 The Khronos Group Inc. 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 25 *//*--------------------------------------------------------------------*/ 26 27 #include "deDynamicLibrary.hpp" 28 #include "tcuFunctionLibrary.hpp" 29 #include "tcuDefs.hpp" 30 #include "tcuPlatform.hpp" 31 #include "gluPlatform.hpp" 32 #include "egluPlatform.hpp" 33 #include "vkPlatform.hpp" 34 35 namespace tcu 36 { 37 namespace nullws 38 { 39 class VulkanLibrary : public vk::Library 40 { 41 public: VulkanLibrary(void)42 VulkanLibrary (void) 43 : m_library ("libvulkan.so.1") 44 , m_driver (m_library) 45 { 46 } 47 getPlatformInterface(void) const48 const vk::PlatformInterface& getPlatformInterface (void) const 49 { 50 return m_driver; 51 } getFunctionLibrary(void) const52 const tcu::FunctionLibrary& getFunctionLibrary (void) const 53 { 54 return m_library; 55 } 56 private: 57 const tcu::DynamicFunctionLibrary m_library; 58 const vk::PlatformDriver m_driver; 59 }; 60 61 62 class Platform: public tcu::Platform, private glu::Platform, private eglu::Platform, private vk::Platform 63 { 64 public: 65 Platform (); 66 virtual ~Platform (); 67 getGLPlatform() const68 virtual const glu::Platform& getGLPlatform () const { return static_cast<const glu::Platform&>(*this); } getEGLPlatform() const69 virtual const eglu::Platform& getEGLPlatform () const { return static_cast<const eglu::Platform&>(*this); } getVulkanPlatform() const70 virtual const vk::Platform& getVulkanPlatform() const { return static_cast<const vk::Platform&>(*this); } 71 createLibrary(void) const72 vk::Library* createLibrary (void) const 73 { 74 return new VulkanLibrary(); 75 } 76 // FINISHME: Query actual memory limits. 77 // 78 // These hard-coded memory limits were copied from tcuX11Platform.cpp, 79 // and they work well enough for Intel platforms. getMemoryLimits(vk::PlatformMemoryLimits & limits) const80 void getMemoryLimits (vk::PlatformMemoryLimits& limits) const 81 { 82 limits.totalSystemMemory = 256*1024*1024; 83 limits.totalDeviceLocalMemory = 128*1024*1024; 84 limits.deviceMemoryAllocationGranularity = 64*1024; 85 limits.devicePageSize = 4096; 86 limits.devicePageTableEntrySize = 8; 87 limits.devicePageTableHierarchyLevels = 3; 88 } 89 90 }; 91 92 } // nullws 93 } // tcu 94 95 #endif // _TCUNULLWSPLATFORM_HPP 96