blob: 498f344e112c81a0086c8d9b7c63125bcec10b7a [file] [log] [blame]
/*-------------------------------------------------------------------------
* 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();
}