zengine/engine/modules/render/vulkan/include/vkn/vulkan_context.h

31 lines
1.4 KiB
C
Raw Normal View History

2024-12-16 21:49:57 +08:00
#pragma once
2024-10-30 15:15:25 +08:00
#include "type.h"
2024-12-26 21:54:38 +08:00
#include "render/render_api.h"
2024-10-30 15:15:25 +08:00
namespace vkn {
using api::BufferDesc;
2024-12-26 21:54:38 +08:00
using api::RenderPassState;
2024-10-30 15:15:25 +08:00
struct VulkanContext : public api::RenderContext {
VkFence surfaceFence;
VkSemaphore surfaceSemaphore;
VkSemaphore presentSemaphore;
2024-12-12 22:20:56 +08:00
VkSemaphore graphSemaphore;
2024-12-26 21:54:38 +08:00
VkCommandBuffer transferCommand;
2024-12-12 22:20:56 +08:00
VkCommandBuffer surfaceCommand;
2024-10-30 15:15:25 +08:00
VkCommandBuffer command;
void SetScissor(uint32_t x, uint32_t y, uint32_t width, uint32_t height) override;
void SetViewport(float x, float y, float width, float height, float min_depth, float max_depth) override;
void BindIndexBuffer(BufferDesc desc, uint32_t index_stride) override;
void BindVertexBuffer(BufferDesc desc) override;
void BindVertexBuffers(uint32_t buffer_count, const BufferDesc* descs, const uint32_t* offsets)override;
void DrawIndexed(uint32_t index_count, uint32_t first_index, uint32_t first_vertex) override;
2024-12-16 21:49:57 +08:00
void ExecuteSurfaceBarriers(const ResourceBarrierDesc& desc) override;
2024-12-26 21:54:38 +08:00
void ExecuteResourceBarriers(const ResourceBarrierDesc& desc) override;
void UpdateTexture(TextureDesc& texture, const TextureUpdateArgs& update, ResourceState state) override;
2024-10-30 15:15:25 +08:00
2024-12-21 15:32:22 +08:00
void ClearSurface(VkClearColorValue clearValue);
2024-12-26 21:54:38 +08:00
void BeginRecord(VkCommandBuffer cmd, VkCommandBufferUsageFlags flag);
2024-10-30 15:15:25 +08:00
void EndRecord(VkQueue queue);
2024-12-26 21:54:38 +08:00
void FlushCommand();
VkCommandBuffer GetTransferCommand();
2024-10-30 15:15:25 +08:00
};
}