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