26#include "vulkan/vulkan_raii.hpp"
27#include "vulkan/vulkan_to_string.hpp"
33 auto expected = (x); \
34 if (!expected.ok()) { \
35 return gfxstream::unexpected(expected.error()); \
37 std::move(expected.value()); \
40#define VK_EXPECT_RESULT(x) \
42 vk::Result result = (x); \
43 if (result != vk::Result::eSuccess) { \
44 return gfxstream::unexpected(result); \
48#define VK_EXPECT_RV(x) \
51 if (vk_rv.result != vk::Result::eSuccess) { \
52 return gfxstream::unexpected(vk_rv.result); \
54 std::move(vk_rv.value); \
57#define VK_EXPECT_RV_OR_STRING(x) \
60 if (vk_rv.result != vk::Result::eSuccess) { \
61 return gfxstream::unexpected(std::string("Failed to " #x ": ") + \
62 vk::to_string(vk_rv.result)); \
64 std::move(vk_rv.value); \
69 vk::Result result = (x); \
70 if (result != vk::Result::eSuccess) { \
78 if (vk_rv.result != vk::Result::eSuccess) { \
79 return vk_rv.result; \
81 std::move(vk_rv.value); \
87 const std::vector<std::string>& instance_extensions = {},
88 const std::vector<std::string>& instance_layers = {},
89 const std::vector<std::string>& device_extensions = {});
102 vk::DeviceSize buffer_size, vk::BufferUsageFlags buffer_usages,
103 vk::MemoryPropertyFlags buffer_memory_properties);
105 vk::DeviceSize buffer_size, vk::BufferUsageFlags buffer_usages,
106 vk::MemoryPropertyFlags buffer_memory_properties,
107 const uint8_t* buffer_data);
110 const std::function<
vk::Result(vk::UniqueCommandBuffer&)>& func,
111 const std::vector<vk::UniqueSemaphore>& semaphores_wait = {},
112 const std::vector<vk::UniqueSemaphore>& semaphores_signal = {});
121 vk::ImageUsageFlags usages, vk::MemoryPropertyFlags memory_properties,
122 vk::ImageLayout returned_layout);
125 uint32_t width, uint32_t height,
const vk::UniqueImage&
image,
126 vk::ImageLayout current_layout, vk::ImageLayout returned_layout);
136 uint32_t width, uint32_t height, vk::ImageUsageFlags usages,
137 vk::MemoryPropertyFlags memory_properties,
138 vk::ImageLayout returned_layout);
142 const std::vector<uint8_t>& image_data_y,
143 const std::vector<uint8_t>& image_data_u,
144 const std::vector<uint8_t>& image_data_v,
145 vk::ImageLayout current_layout,
146 vk::ImageLayout returned_layout);
155 uint32_t width, uint32_t height,
156 vk::Format colorAttachmentFormat = vk::Format::eUndefined,
157 vk::Format depthAttachmentFormat = vk::Format::eUndefined);
164 Vk(vk::detail::DynamicLoader loader, vk::UniqueInstance
instance,
165 std::optional<vk::UniqueDebugUtilsMessengerEXT>
debug,
166 vk::PhysicalDevice physical_device, vk::UniqueDevice
device,
167 vk::Queue queue, uint32_t queue_family_index,
168 vk::UniqueCommandPool command_pool, vk::UniqueBuffer stagingBuffer,
169 vk::UniqueDeviceMemory stagingBufferMemory)
vk::UniqueCommandPool mCommandPool
Definition: vulkan.h:189
Vk(vk::detail::DynamicLoader loader, vk::UniqueInstance instance, std::optional< vk::UniqueDebugUtilsMessengerEXT > debug, vk::PhysicalDevice physical_device, vk::UniqueDevice device, vk::Queue queue, uint32_t queue_family_index, vk::UniqueCommandPool command_pool, vk::UniqueBuffer stagingBuffer, vk::UniqueDeviceMemory stagingBufferMemory)
Definition: vulkan.h:164
static gfxstream::expected< Vk, vk::Result > Load(const std::vector< std::string > &instance_extensions={}, const std::vector< std::string > &instance_layers={}, const std::vector< std::string > &device_extensions={})
Definition: vulkan.cpp:100
gfxstream::expected< ImageWithMemory, vk::Result > CreateImage(uint32_t width, uint32_t height, vk::Format format, vk::ImageUsageFlags usages, vk::MemoryPropertyFlags memory_properties, vk::ImageLayout returned_layout)
Definition: vulkan.cpp:299
uint32_t mQueueFamilyIndex
Definition: vulkan.h:188
vk::UniqueDeviceMemory mStagingBufferMemory
Definition: vulkan.h:192
vk::Device & device()
Definition: vulkan.h:161
vk::Queue mQueue
Definition: vulkan.h:187
static constexpr const VkDeviceSize kStagingBufferSize
Definition: vulkan.h:190
vk::detail::DynamicLoader mLoader
Definition: vulkan.h:182
vk::Result DoCommandsImmediate(const std::function< vk::Result(vk::UniqueCommandBuffer &)> &func, const std::vector< vk::UniqueSemaphore > &semaphores_wait={}, const std::vector< vk::UniqueSemaphore > &semaphores_signal={})
Definition: vulkan.cpp:951
vk::UniqueBuffer mStagingBuffer
Definition: vulkan.h:191
vk::UniqueInstance mInstance
Definition: vulkan.h:183
vk::Result LoadYuvImage(const vk::UniqueImage &image, uint32_t width, uint32_t height, const std::vector< uint8_t > &image_data_y, const std::vector< uint8_t > &image_data_u, const std::vector< uint8_t > &image_data_v, vk::ImageLayout current_layout, vk::ImageLayout returned_layout)
Definition: vulkan.cpp:648
gfxstream::expected< FramebufferWithAttachments, vk::Result > CreateFramebuffer(uint32_t width, uint32_t height, vk::Format colorAttachmentFormat=vk::Format::eUndefined, vk::Format depthAttachmentFormat=vk::Format::eUndefined)
Definition: vulkan.cpp:810
std::optional< vk::UniqueDebugUtilsMessengerEXT > mDebugMessenger
Definition: vulkan.h:184
Vk & operator=(const Vk &)=delete
vk::Instance & instance()
Definition: vulkan.h:159
vk::PhysicalDevice mPhysicalDevice
Definition: vulkan.h:185
Vk & operator=(Vk &&)=default
gfxstream::expected< std::vector< uint8_t >, vk::Result > DownloadImage(uint32_t width, uint32_t height, const vk::UniqueImage &image, vk::ImageLayout current_layout, vk::ImageLayout returned_layout)
Definition: vulkan.cpp:396
gfxstream::expected< YuvImageWithMemory, vk::Result > CreateYuvImage(uint32_t width, uint32_t height, vk::ImageUsageFlags usages, vk::MemoryPropertyFlags memory_properties, vk::ImageLayout returned_layout)
Definition: vulkan.cpp:505
gfxstream::expected< BufferWithMemory, vk::Result > CreateBufferWithData(vk::DeviceSize buffer_size, vk::BufferUsageFlags buffer_usages, vk::MemoryPropertyFlags buffer_memory_properties, const uint8_t *buffer_data)
Definition: vulkan.cpp:269
gfxstream::expected< BufferWithMemory, vk::Result > CreateBuffer(vk::DeviceSize buffer_size, vk::BufferUsageFlags buffer_usages, vk::MemoryPropertyFlags buffer_memory_properties)
Definition: vulkan.cpp:262
vk::UniqueDevice mDevice
Definition: vulkan.h:186
Definition: expected.h:33
#define debug(format, args...)
Definition: fec_private.h:197
EventFormat format
Definition: kernel_log_server.cc:57
std::string Format(const TimeStamp &time_point)
Definition: instance_database_types.cpp:42
android::base::expected< T, StackTraceError > Result
Definition: result.h:281
Definition: logging.h:464
vk::UniqueBuffer buffer
Definition: vulkan.h:98
vk::UniqueDeviceMemory bufferMemory
Definition: vulkan.h:99
vk::UniqueRenderPass renderpass
Definition: vulkan.h:151
vk::UniqueFramebuffer framebuffer
Definition: vulkan.h:152
std::optional< ImageWithMemory > depthAttachment
Definition: vulkan.h:150
std::optional< ImageWithMemory > colorAttachment
Definition: vulkan.h:149
vk::UniqueImageView imageView
Definition: vulkan.h:117
vk::UniqueImage image
Definition: vulkan.h:115
vk::UniqueDeviceMemory imageMemory
Definition: vulkan.h:116
vk::UniqueImageView imageView
Definition: vulkan.h:133
vk::UniqueSamplerYcbcrConversion imageSamplerConversion
Definition: vulkan.h:129
vk::UniqueImage image
Definition: vulkan.h:132
vk::UniqueSampler imageSampler
Definition: vulkan.h:130
vk::UniqueDeviceMemory imageMemory
Definition: vulkan.h:131