#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 rx
{
class FramebufferVk;
namespace vk
{
class Format;
static constexpr size_t kMaxExtensionNames = …;
ExtensionNameList;
struct SkippedSyncvalMessage
{ … };
class ImageMemorySuballocator : angle::NonCopyable
{ … };
SignalSemaphoreVector;
inline void CollectGarbage(std::vector<vk::GarbageObject> *garbageOut) { … }
template <typename ArgT, typename... ArgsT>
void CollectGarbage(std::vector<vk::GarbageObject> *garbageOut, ArgT object, ArgsT... objectsIn)
{ … }
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)
{ … }
}
}
#endif