chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.h

//
// Copyright 2016 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// vk_renderer.h:
//    Defines the class interface for Renderer.
//

#ifndef LIBANGLE_RENDERER_VULKAN_RENDERERVK_H_
#define LIBANGLE_RENDERER_VULKAN_RENDERERVK_H_

#include <condition_variable>
#include <deque>
#include <memory>
#include <mutex>
#include <queue>
#include <thread>

#include "common/PackedEnums.h"
#include "common/SimpleMutex.h"
#include "common/WorkerThread.h"
#include "common/angleutils.h"
#include "common/vulkan/vk_headers.h"
#include "common/vulkan/vulkan_icd.h"
#include "libANGLE/Caps.h"
#include "libANGLE/renderer/vulkan/CommandProcessor.h"
#include "libANGLE/renderer/vulkan/DebugAnnotatorVk.h"
#include "libANGLE/renderer/vulkan/MemoryTracking.h"
#include "libANGLE/renderer/vulkan/QueryVk.h"
#include "libANGLE/renderer/vulkan/UtilsVk.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "libANGLE/renderer/vulkan/vk_helpers.h"
#include "libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h"
#include "libANGLE/renderer/vulkan/vk_mem_alloc_wrapper.h"
#include "libANGLE/renderer/vulkan/vk_resource.h"

namespace angle
{
class Library;
struct FrontendFeatures;
}  // namespace angle

namespace rx
{
class FramebufferVk;

namespace vk
{
class Format;

static constexpr size_t kMaxExtensionNames =;
ExtensionNameList;

// Information used to accurately skip known synchronization issues in ANGLE.
struct SkippedSyncvalMessage
{};

class ImageMemorySuballocator : angle::NonCopyable
{};

// Supports one semaphore from current surface, and one semaphore passed to
// glSignalSemaphoreEXT.
SignalSemaphoreVector;

// Recursive function to process variable arguments for garbage collection
inline void CollectGarbage(std::vector<vk::GarbageObject> *garbageOut) {}
template <typename ArgT, typename... ArgsT>
void CollectGarbage(std::vector<vk::GarbageObject> *garbageOut, ArgT object, ArgsT... objectsIn)
{}

// Recursive function to process variable arguments for garbage destroy
inline void DestroyGarbage(vk::Renderer *renderer) {}

class OneOffCommandPool : angle::NonCopyable
{};

enum class UseDebugLayers
{};

enum class UseVulkanSwapchain
{};

class Renderer : angle::NonCopyable
{};

ANGLE_INLINE Serial Renderer::generateQueueSerial(SerialIndex index)
{}

ANGLE_INLINE void Renderer::reserveQueueSerials(SerialIndex index,
                                                size_t count,
                                                RangedSerialFactory *rangedSerialFactory)
{}

ANGLE_INLINE bool Renderer::hasResourceUseSubmitted(const vk::ResourceUse &use) const
{}

ANGLE_INLINE bool Renderer::hasQueueSerialSubmitted(const QueueSerial &queueSerial) const
{}

ANGLE_INLINE Serial Renderer::getLastSubmittedSerial(SerialIndex index) const
{}

ANGLE_INLINE bool Renderer::hasResourceUseFinished(const vk::ResourceUse &use) const
{}

ANGLE_INLINE bool Renderer::hasQueueSerialFinished(const QueueSerial &queueSerial) const
{}

ANGLE_INLINE angle::Result Renderer::waitForPresentToBeSubmitted(
    vk::SwapchainStatus *swapchainStatus)
{}

ANGLE_INLINE void Renderer::requestAsyncCommandsAndGarbageCleanup(vk::Context *context)
{}

ANGLE_INLINE angle::Result Renderer::checkCompletedCommands(vk::Context *context)
{}

ANGLE_INLINE angle::Result Renderer::retireFinishedCommands(vk::Context *context)
{}

template <typename ArgT, typename... ArgsT>
void DestroyGarbage(Renderer *renderer, ArgT object, ArgsT... objectsIn)
{}

template <typename... ArgsT>
void DestroyGarbage(Renderer *renderer, vk::Allocation *object, ArgsT... objectsIn)
{}
}  // namespace vk
}  // namespace rx

#endif  // LIBANGLE_RENDERER_VULKAN_RENDERERVK_H_