88 lines
2.6 KiB
C++
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();
|
|
}
|