Starting render passes.
This commit is contained in:
parent
52a6f795f7
commit
1dcc84a472
|
@ -37,6 +37,37 @@ VkRenderPass RenderCache::BeginRenderPass(VkCommandBuffer command_buffer,
|
|||
// Lookup or construct a render pass compatible with our current state.
|
||||
VkRenderPass render_pass = nullptr;
|
||||
|
||||
// Begin render pass.
|
||||
VkRenderPassBeginInfo render_pass_begin_info;
|
||||
render_pass_begin_info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
|
||||
render_pass_begin_info.pNext = nullptr;
|
||||
render_pass_begin_info.renderPass = render_pass;
|
||||
|
||||
// Target framebuffer.
|
||||
// render_pass_begin_info.framebuffer = current_buffer.framebuffer;
|
||||
|
||||
// Render into the entire buffer (or at least tell the API we are doing
|
||||
// this). In theory it'd be better to clip this to the scissor region, but
|
||||
// the docs warn anything but the full framebuffer may be slow.
|
||||
render_pass_begin_info.renderArea.offset.x = 0;
|
||||
render_pass_begin_info.renderArea.offset.y = 0;
|
||||
// render_pass_begin_info.renderArea.extent.width = surface_width_;
|
||||
// render_pass_begin_info.renderArea.extent.height = surface_height_;
|
||||
|
||||
// Configure clear color, if clearing.
|
||||
VkClearValue color_clear_value;
|
||||
color_clear_value.color.float32[0] = 238 / 255.0f;
|
||||
color_clear_value.color.float32[1] = 238 / 255.0f;
|
||||
color_clear_value.color.float32[2] = 238 / 255.0f;
|
||||
color_clear_value.color.float32[3] = 1.0f;
|
||||
VkClearValue clear_values[] = {color_clear_value};
|
||||
render_pass_begin_info.clearValueCount =
|
||||
static_cast<uint32_t>(xe::countof(clear_values));
|
||||
render_pass_begin_info.pClearValues = clear_values;
|
||||
|
||||
vkCmdBeginRenderPass(command_buffer, &render_pass_begin_info,
|
||||
VK_SUBPASS_CONTENTS_INLINE);
|
||||
|
||||
return render_pass;
|
||||
}
|
||||
|
||||
|
@ -44,6 +75,9 @@ void RenderCache::EndRenderPass() {
|
|||
assert_not_null(current_command_buffer_);
|
||||
auto command_buffer = current_command_buffer_;
|
||||
current_command_buffer_ = nullptr;
|
||||
|
||||
// End the render pass.
|
||||
vkCmdEndRenderPass(command_buffer);
|
||||
}
|
||||
|
||||
void RenderCache::ClearCache() {
|
||||
|
|
|
@ -52,6 +52,9 @@ class RenderCache {
|
|||
private:
|
||||
RegisterFile* register_file_ = nullptr;
|
||||
VkDevice device_ = nullptr;
|
||||
|
||||
// Only valid during a BeginRenderPass/EndRenderPass block.
|
||||
VkCommandBuffer current_command_buffer_ = nullptr;
|
||||
};
|
||||
|
||||
} // namespace vulkan
|
||||
|
|
Loading…
Reference in New Issue