summaryrefslogtreecommitdiff
path: root/src/broadcom/vulkan/v3dv_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/broadcom/vulkan/v3dv_private.h')
-rw-r--r--src/broadcom/vulkan/v3dv_private.h31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index ed6a99ce35d..c72bb6fc4f2 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -236,6 +236,15 @@ struct v3dv_device {
* the GPU is idle.
*/
uint32_t last_job_sync;
+
+ /* Resources used for meta operations */
+ struct {
+ struct {
+ VkPipelineLayout playout;
+ VkPipeline pipeline;
+ VkRenderPass pass;
+ } color_clear;
+ } meta;
};
struct v3dv_device_memory {
@@ -660,8 +669,8 @@ struct v3dv_descriptor_state {
};
struct v3dv_cmd_buffer_state {
- const struct v3dv_render_pass *pass;
- const struct v3dv_framebuffer *framebuffer;
+ struct v3dv_render_pass *pass;
+ struct v3dv_framebuffer *framebuffer;
VkRect2D render_area;
/* Current job being recorded */
@@ -684,6 +693,14 @@ struct v3dv_cmd_buffer_state {
/* Used to flag OOM conditions during command buffer recording */
bool oom;
+
+ /* Command buffer state saved during a meta operation */
+ struct {
+ uint32_t subpass_idx;
+ VkRenderPass pass;
+ VkPipeline pipeline;
+ VkFramebuffer framebuffer;
+ } meta;
};
struct v3dv_descriptor {
@@ -738,6 +755,14 @@ struct v3dv_job *v3dv_cmd_buffer_start_job(struct v3dv_cmd_buffer *cmd_buffer,
int32_t subpass_idx);
void v3dv_cmd_buffer_finish_job(struct v3dv_cmd_buffer *cmd_buffer);
+struct v3dv_job *v3dv_cmd_buffer_subpass_start(struct v3dv_cmd_buffer *cmd_buffer,
+ uint32_t subpass_idx);
+
+void v3dv_cmd_buffer_subpass_finish(struct v3dv_cmd_buffer *cmd_buffer);
+
+void v3dv_cmd_buffer_meta_state_push(struct v3dv_cmd_buffer *cmd_buffer);
+void v3dv_cmd_buffer_meta_state_pop(struct v3dv_cmd_buffer *cmd_buffer);
+
void v3dv_render_pass_setup_render_target(struct v3dv_cmd_buffer *cmd_buffer,
int rt,
uint32_t *rt_bpp,
@@ -1055,6 +1080,8 @@ struct v3dv_pipeline {
uint8_t stencil_cfg[2][cl_packet_length(STENCIL_CFG)];
};
+const nir_shader_compiler_options *v3dv_pipeline_get_nir_options(void);
+
static inline uint32_t
v3dv_zs_buffer_from_aspect_bits(VkImageAspectFlags aspects)
{