Skip to content

Commit 540427c

Browse files
committed
-Dev: Pipeline barrier for Buffers
1 parent f1226e6 commit 540427c

File tree

3 files changed

+283
-255
lines changed

3 files changed

+283
-255
lines changed

include/engine/graphics/command_buffer.h

Lines changed: 66 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -31,98 +31,103 @@ struct CommandBuffer {
3131
VkQueue queue = VK_NULL_HANDLE;
3232
bool isRecording = false;
3333

34-
void begin(VkCommandBufferUsageFlags flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
34+
void begin( VkCommandBufferUsageFlags flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT );
3535
void end();
3636
void reset();
37-
void submit(Fence fence = {}, std::vector<Semaphore> waitSemaphores = {}, std::vector<Semaphore> signalSemaphores = {});
37+
void submit( Fence fence = {}, std::vector<Semaphore> waitSemaphores = {}, std::vector<Semaphore> signalSemaphores = {} );
3838
void cleanup();
3939

4040
/****************************************** */
4141
/* COMMANDS */
4242
/****************************************** */
4343

44-
void begin_renderpass(RenderPass& renderpass, Framebuffer& fbo, VkSubpassContents subpassContents = VK_SUBPASS_CONTENTS_INLINE);
45-
void end_renderpass(RenderPass& renderpass, Framebuffer& fbo);
46-
void draw_geometry(const VertexArrays& vao, uint32_t instanceCount = 1, uint32_t firstOcurrence = 0, int32_t offset = 0, uint32_t firstInstance = 0);
44+
void begin_renderpass( RenderPass& renderpass, Framebuffer& fbo, VkSubpassContents subpassContents = VK_SUBPASS_CONTENTS_INLINE );
45+
void end_renderpass( RenderPass& renderpass, Framebuffer& fbo );
46+
void draw_geometry( const VertexArrays& vao, uint32_t instanceCount = 1, uint32_t firstOcurrence = 0, int32_t offset = 0, uint32_t firstInstance = 0 );
4747
void draw_gui_data();
48-
void bind_shaderpass(ShaderPass& pass);
49-
void bind_descriptor_set(DescriptorSet descriptor,
50-
uint32_t ocurrence,
51-
ShaderPass& pass,
52-
std::vector<uint32_t> offsets = {},
53-
BindingType binding = BINDING_TYPE_GRAPHIC);
54-
void set_viewport(Extent2D extent, Offset2D scissorOffset = {0, 0});
55-
void set_cull_mode(CullingMode mode);
56-
void set_depth_write_enable(bool op);
57-
void set_depth_test_enable(bool op);
58-
void set_depth_bias_enable(bool op);
59-
void set_depth_bias(float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
60-
61-
void pipeline_barrier(Image& img,
62-
ImageLayout oldLayout = LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
63-
ImageLayout newLayout = LAYOUT_SHADER_READ_ONLY_OPTIMAL,
64-
AccessFlags srcMask = ACCESS_COLOR_ATTACHMENT_WRITE,
65-
AccessFlags dstMask = ACCESS_SHADER_READ,
66-
PipelineStage srcStage = STAGE_COLOR_ATTACHMENT_OUTPUT,
67-
PipelineStage dstStage = STAGE_FRAGMENT_SHADER);
68-
void pipeline_barrier(Image& img,
69-
uint32_t baseMipLevel,
70-
uint32_t mipLevels,
71-
ImageLayout oldLayout = LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
72-
ImageLayout newLayout = LAYOUT_SHADER_READ_ONLY_OPTIMAL,
73-
AccessFlags srcMask = ACCESS_COLOR_ATTACHMENT_WRITE,
74-
AccessFlags dstMask = ACCESS_SHADER_READ,
75-
PipelineStage srcStage = STAGE_COLOR_ATTACHMENT_OUTPUT,
76-
PipelineStage dstStage = STAGE_FRAGMENT_SHADER);
77-
78-
void clear_image(Image& img, ImageLayout layout, ImageAspect aspect = ASPECT_COLOR, Vec4 clearColor = Vec4(0.0f, 0.0f, 0.0f, 1.0f));
48+
void bind_shaderpass( ShaderPass& pass );
49+
void bind_descriptor_set( DescriptorSet descriptor,
50+
uint32_t ocurrence,
51+
ShaderPass& pass,
52+
std::vector<uint32_t> offsets = {},
53+
BindingType binding = BINDING_TYPE_GRAPHIC );
54+
void set_viewport( Extent2D extent, Offset2D scissorOffset = { 0, 0 } );
55+
void set_cull_mode( CullingMode mode );
56+
void set_depth_write_enable( bool op );
57+
void set_depth_test_enable( bool op );
58+
void set_depth_bias_enable( bool op );
59+
void set_depth_bias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor );
60+
61+
void pipeline_barrier( Image& img,
62+
ImageLayout oldLayout = LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
63+
ImageLayout newLayout = LAYOUT_SHADER_READ_ONLY_OPTIMAL,
64+
AccessFlags srcMask = ACCESS_COLOR_ATTACHMENT_WRITE,
65+
AccessFlags dstMask = ACCESS_SHADER_READ,
66+
PipelineStage srcStage = STAGE_COLOR_ATTACHMENT_OUTPUT,
67+
PipelineStage dstStage = STAGE_FRAGMENT_SHADER );
68+
void pipeline_barrier( Image& img,
69+
uint32_t baseMipLevel,
70+
uint32_t mipLevels,
71+
ImageLayout oldLayout = LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
72+
ImageLayout newLayout = LAYOUT_SHADER_READ_ONLY_OPTIMAL,
73+
AccessFlags srcMask = ACCESS_COLOR_ATTACHMENT_WRITE,
74+
AccessFlags dstMask = ACCESS_SHADER_READ,
75+
PipelineStage srcStage = STAGE_COLOR_ATTACHMENT_OUTPUT,
76+
PipelineStage dstStage = STAGE_FRAGMENT_SHADER );
77+
void pipeline_barrier( Buffer& buffer,
78+
AccessFlags srcMask = ACCESS_TRANSFER_WRITE,
79+
AccessFlags dstMask = ACCESS_SHADER_READ,
80+
PipelineStage srcStage = STAGE_TRANSFER,
81+
PipelineStage dstStage = STAGE_FRAGMENT_SHADER );
82+
83+
void clear_image( Image& img, ImageLayout layout, ImageAspect aspect = ASPECT_COLOR, Vec4 clearColor = Vec4( 0.0f, 0.0f, 0.0f, 1.0f ) );
7984

8085
/*Copy the entire extent of the image*/
81-
void blit_image(Image& srcImage,
82-
Image& dstImage,
83-
FilterType filter = FILTER_LINEAR,
84-
uint32_t mipLevel = 0,
85-
ImageAspect srcAspect = ASPECT_COLOR,
86-
ImageAspect dstAspect = ASPECT_COLOR);
86+
void blit_image( Image& srcImage,
87+
Image& dstImage,
88+
FilterType filter = FILTER_LINEAR,
89+
uint32_t mipLevel = 0,
90+
ImageAspect srcAspect = ASPECT_COLOR,
91+
ImageAspect dstAspect = ASPECT_COLOR );
8792

8893
/*Copy a custom extent of the image*/
89-
void blit_image(Image& srcImage,
90-
Image& dstImage,
91-
Extent2D srcOrigin,
92-
Extent2D dstOrigin,
93-
Extent2D srcExtent,
94-
Extent2D dstExtent,
95-
FilterType filter = FILTER_LINEAR,
96-
uint32_t mipLevel = 0,
97-
ImageAspect srcAspect = ASPECT_COLOR,
98-
ImageAspect dstAspect = ASPECT_COLOR);
94+
void blit_image( Image& srcImage,
95+
Image& dstImage,
96+
Extent2D srcOrigin,
97+
Extent2D dstOrigin,
98+
Extent2D srcExtent,
99+
Extent2D dstExtent,
100+
FilterType filter = FILTER_LINEAR,
101+
uint32_t mipLevel = 0,
102+
ImageAspect srcAspect = ASPECT_COLOR,
103+
ImageAspect dstAspect = ASPECT_COLOR );
99104

100-
void push_constants(ShaderPass& pass, ShaderStageFlags stage, const void* data, uint32_t size, uint32_t offset = 0);
105+
void push_constants( ShaderPass& pass, ShaderStageFlags stage, const void* data, uint32_t size, uint32_t offset = 0 );
101106

102-
void dispatch_compute(Extent3D grid);
107+
void dispatch_compute( Extent3D grid );
103108

104-
void copy_buffer(Buffer& srcBuffer, Buffer& dstBuffer, size_t size);
109+
void copy_buffer( Buffer& srcBuffer, Buffer& dstBuffer, size_t size );
105110

106111
/*
107112
Expected layout is LAYOUT_UNDEFINED
108113
*/
109-
void copy_buffer_to_image(Image& img, Buffer& buffer);
110-
111-
void copy_image_to_buffer(Image& img, Buffer& buffer);
114+
void copy_buffer_to_image( Image& img, Buffer& buffer );
115+
116+
void copy_image_to_buffer( Image& img, Buffer& buffer );
112117

113118
/*
114119
Generates mipmaps for a given image following a downsampling by 2 strategy
115120
*/
116-
void generate_mipmaps(Image& img, ImageLayout initialLayout = LAYOUT_TRANSFER_DST_OPTIMAL, ImageLayout finalLayout = LAYOUT_SHADER_READ_ONLY_OPTIMAL);
121+
void generate_mipmaps( Image& img, ImageLayout initialLayout = LAYOUT_TRANSFER_DST_OPTIMAL, ImageLayout finalLayout = LAYOUT_SHADER_READ_ONLY_OPTIMAL );
117122
};
118123
struct CommandPool {
119124
VkCommandPool handle = VK_NULL_HANDLE;
120125
VkDevice device = VK_NULL_HANDLE;
121126
VkQueue queue = VK_NULL_HANDLE;
122127

123-
CommandBuffer allocate_command_buffer(uint32_t count, CommandBufferLevel level = COMMAND_BUFFER_LEVEL_PRIMARY);
128+
CommandBuffer allocate_command_buffer( uint32_t count, CommandBufferLevel level = COMMAND_BUFFER_LEVEL_PRIMARY );
124129

125-
void reset(VkCommandPoolResetFlags flags = 0) const;
130+
void reset( VkCommandPoolResetFlags flags = 0 ) const;
126131

127132
void cleanup();
128133
};

resources/shaders/deferred/composition.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ void main() {
160160
brdf.F0 = vec3(0.04);
161161
brdf.F0 = mix(brdf.F0, brdf.albedo, brdf.metalness);
162162
brdf.emission = g_emission;
163-
brdf.diffuseModel = 1.0;
163+
brdf.diffuseModel = 2.0;
164164

165165
// Indirect Component ____________________________
166166
if(settings.vxgi.enabled == 1) {

0 commit comments

Comments
 (0)