unplugged-system/external/deqp/framework/platform/fuchsia/tcuFuchsiaPlatform.cpp

88 lines
2.6 KiB
C++

/*-------------------------------------------------------------------------
* 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();
}