| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "tcuFunctionLibrary.hpp" |
| #include "tcuPlatform.hpp" |
| #include "vkPlatform.hpp" |
| |
| class FuchsiaVkLibrary : public vk::Library { |
| public: |
| FuchsiaVkLibrary() |
| : library_("libvulkan.so"), driver_(library_) {} |
| |
| const vk::PlatformInterface& getPlatformInterface() const { |
| return driver_; |
| } |
| const tcu::FunctionLibrary& getFunctionLibrary (void) const |
| { |
| return library_; |
| } |
| |
| private: |
| const tcu::DynamicFunctionLibrary library_; |
| const vk::PlatformDriver driver_; |
| }; |
| |
| class FuchsiaVkPlatform : public vk::Platform { |
| public: |
| vk::Library* createLibrary() const { return new FuchsiaVkLibrary(); } |
| |
| void getMemoryLimits(vk::PlatformMemoryLimits& limits) const { |
| // Copied from tcuX11VulkanPlatform.cpp |
| limits.totalSystemMemory = 256 * 1024 * 1024; |
| limits.totalDeviceLocalMemory = 0; // unified memory |
| limits.deviceMemoryAllocationGranularity = 64 * 1024; |
| limits.devicePageSize = 4096; |
| limits.devicePageTableEntrySize = 8; |
| limits.devicePageTableHierarchyLevels = 3; |
| } |
| }; |
| |
| class FuchsiaPlatform : public tcu::Platform { |
| public: |
| ~FuchsiaPlatform() {} |
| |
| const vk::Platform& getVulkanPlatform() const { return vk_platform_; } |
| |
| private: |
| FuchsiaVkPlatform vk_platform_; |
| }; |
| |
| tcu::Platform* createPlatform() { |
| return new FuchsiaPlatform(); |
| } |