| /*------------------------------------------------------------------------- |
| * drawElements Quality Program Tester Core |
| * ---------------------------------------- |
| * |
| * Copyright (c) 2022 Google, Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *//*! |
| * \file |
| * \brief Fuchsia Platform definition. |
| *//*--------------------------------------------------------------------*/ |
| |
| #include "tcuFunctionLibrary.hpp" |
| #include "tcuPlatform.hpp" |
| #include "vkPlatform.hpp" |
| |
| class FuchsiaVkLibrary : public vk::Library |
| { |
| public: |
| FuchsiaVkLibrary(const char *library_path) |
| : library_(library_path ? library_path : "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 char *library_path) const |
| { |
| return new FuchsiaVkLibrary(library_path); |
| } |
| |
| void describePlatform(std::ostream &dst) const |
| { |
| dst << "OS: Fuchsia\n"; |
| const char *cpu = "Unknown"; |
| #if defined(__x86_64__) |
| cpu = "x86_64"; |
| #elif defined(__aarch64__) |
| cpu = "aarch64"; |
| #endif |
| dst << "CPU: " << cpu << "\n"; |
| } |
| |
| void getMemoryLimits(tcu::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(); |
| } |