Drawing a textured quad
Added new assets Loaded all texture assets into game state Loaded the basic pipeline Setup a hard-coded quad to test drawing Created a very jank vertex struct Added ReadEntireFile for filesystem Added getting file size from file handle Added a descriptor pool to each in flight frame Changed Vk_BufferCreate to handle multiple uses Added shader building to the windows.bat build script
This commit is contained in:
@@ -25,26 +25,6 @@
|
||||
#define VK_MAX_FRAMES_IN_FLIGHT 8
|
||||
#define VK_NUM_SCRATCH 8
|
||||
|
||||
typedef struct Vk_CommandBuffer Vk_CommandBuffer;
|
||||
struct Vk_CommandBuffer {
|
||||
VkCommandBuffer handle;
|
||||
VkFence fence;
|
||||
};
|
||||
|
||||
typedef struct Vk_Frame Vk_Frame;
|
||||
struct Vk_Frame {
|
||||
VkCommandPool pool;
|
||||
VkCommandBuffer cmd;
|
||||
|
||||
VkSemaphore acquire, complete;
|
||||
VkFence fence;
|
||||
|
||||
U32 next_scratch;
|
||||
Vk_CommandBuffer scratch[VK_NUM_SCRATCH];
|
||||
|
||||
U32 image; // swapchain image index
|
||||
};
|
||||
|
||||
typedef struct Vk_Image Vk_Image;
|
||||
struct Vk_Image {
|
||||
VkDeviceMemory memory;
|
||||
@@ -60,14 +40,65 @@ struct Vk_Image {
|
||||
|
||||
typedef struct Vk_Buffer Vk_Buffer;
|
||||
struct Vk_Buffer {
|
||||
VkBuffer handle;
|
||||
|
||||
VkDeviceMemory memory;
|
||||
VkDeviceSize size;
|
||||
|
||||
VkBuffer handle;
|
||||
VkBufferUsageFlags usage;
|
||||
|
||||
B32 host_visible;
|
||||
void *data; // if mapped host visible memory
|
||||
};
|
||||
|
||||
typedef struct Vk_Shader Vk_Shader;
|
||||
struct Vk_Shader {
|
||||
VkShaderModule handle;
|
||||
VkShaderStageFlags stage;
|
||||
};
|
||||
|
||||
typedef struct Vk_Pipeline Vk_Pipeline;
|
||||
struct Vk_Pipeline {
|
||||
VkPipeline handle;
|
||||
|
||||
struct {
|
||||
VkPipelineLayout pipeline;
|
||||
VkDescriptorSetLayout set;
|
||||
} layout;
|
||||
|
||||
struct {
|
||||
VkFormat items[8];
|
||||
U32 count;
|
||||
} targets;
|
||||
|
||||
struct {
|
||||
Vk_Shader items[8];
|
||||
U32 count;
|
||||
} shaders;
|
||||
};
|
||||
|
||||
typedef struct Vk_CommandBuffer Vk_CommandBuffer;
|
||||
struct Vk_CommandBuffer {
|
||||
VkCommandBuffer handle;
|
||||
VkFence fence;
|
||||
};
|
||||
|
||||
typedef struct Vk_Frame Vk_Frame;
|
||||
struct Vk_Frame {
|
||||
VkCommandPool pool;
|
||||
VkCommandBuffer cmd;
|
||||
|
||||
VkDescriptorPool descriptors;
|
||||
|
||||
VkSemaphore acquire, complete;
|
||||
VkFence fence;
|
||||
|
||||
U32 next_scratch;
|
||||
Vk_CommandBuffer scratch[VK_NUM_SCRATCH];
|
||||
|
||||
U32 image; // swapchain image index
|
||||
};
|
||||
|
||||
typedef struct Vk_Context Vk_Context;
|
||||
struct Vk_Context {
|
||||
void *lib;
|
||||
@@ -110,6 +141,8 @@ struct Vk_Context {
|
||||
U32 width;
|
||||
U32 height;
|
||||
} swapchain;
|
||||
|
||||
VkSampler sampler;
|
||||
};
|
||||
|
||||
extern Vk_Context vk;
|
||||
@@ -122,6 +155,7 @@ function void Vk_FrameEnd();
|
||||
function Vk_CommandBuffer *Vk_CommandBufferPush();
|
||||
function void Vk_CommandBufferSubmit(Vk_CommandBuffer *cmds, B32 wait);
|
||||
|
||||
function Vk_Buffer Vk_BufferCreate(U64 size, B32 host_visible);
|
||||
function void Vk_BufferCreate(Vk_Buffer *buffer);
|
||||
function void Vk_ImageCreate(Vk_Image *image);
|
||||
|
||||
#endif // LD_VULKAN_CORE_H_
|
||||
|
||||
Reference in New Issue
Block a user