diff options
-rw-r--r-- | src/vulkan/meta.c | 62 | ||||
-rw-r--r-- | src/vulkan/private.h | 26 |
2 files changed, 39 insertions, 49 deletions
diff --git a/src/vulkan/meta.c b/src/vulkan/meta.c index 83e37c43c7b..4ce917124f9 100644 --- a/src/vulkan/meta.c +++ b/src/vulkan/meta.c @@ -145,22 +145,9 @@ anv_device_init_meta_clear_state(struct anv_device *device) .disable_viewport = true, .use_rectlist = true }, - &device->clear_state.pipeline); + &device->meta_state.clear.pipeline); anv_DestroyObject((VkDevice) device, VK_OBJECT_TYPE_SHADER, fs); - - anv_CreateDynamicRasterState((VkDevice) device, - &(VkDynamicRsStateCreateInfo) { - .sType = VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO, - }, - &device->clear_state.rs_state); - - anv_CreateDynamicColorBlendState((VkDevice) device, - &(VkDynamicCbStateCreateInfo) { - .sType = VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO - }, - &device->clear_state.cb_state); - } #define NUM_VB_USED 2 @@ -287,15 +274,16 @@ anv_cmd_buffer_clear(struct anv_cmd_buffer *cmd_buffer, sizeof(vertex_data) }); - if ((VkPipeline) cmd_buffer->pipeline != device->clear_state.pipeline) + if ((VkPipeline) cmd_buffer->pipeline != device->meta_state.clear.pipeline) anv_CmdBindPipeline((VkCmdBuffer) cmd_buffer, - VK_PIPELINE_BIND_POINT_GRAPHICS, device->clear_state.pipeline); + VK_PIPELINE_BIND_POINT_GRAPHICS, + device->meta_state.clear.pipeline); /* We don't need anything here, only set if not already set. */ if (cmd_buffer->rs_state == NULL) anv_CmdBindDynamicStateObject((VkCmdBuffer) cmd_buffer, VK_STATE_BIND_POINT_RASTER, - device->clear_state.rs_state); + device->meta_state.shared.rs_state); if (cmd_buffer->vp_state == NULL) anv_CmdBindDynamicStateObject((VkCmdBuffer) cmd_buffer, @@ -425,12 +413,12 @@ anv_device_init_meta_blit_state(struct anv_device *device) } }; anv_CreateDescriptorSetLayout((VkDevice) device, &ds_layout_info, - &device->blit_state.ds_layout); + &device->meta_state.blit.ds_layout); VkPipelineLayoutCreateInfo pipeline_layout_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, .descriptorSetCount = 1, - .pSetLayouts = &device->blit_state.ds_layout, + .pSetLayouts = &device->meta_state.blit.ds_layout, }; VkPipelineLayout pipeline_layout; @@ -472,22 +460,10 @@ anv_device_init_meta_blit_state(struct anv_device *device) .disable_vs = true, .use_rectlist = true }, - &device->blit_state.pipeline); + &device->meta_state.blit.pipeline); anv_DestroyObject((VkDevice) device, VK_OBJECT_TYPE_SHADER, vs); anv_DestroyObject((VkDevice) device, VK_OBJECT_TYPE_SHADER, fs); - - anv_CreateDynamicRasterState((VkDevice) device, - &(VkDynamicRsStateCreateInfo) { - .sType = VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO, - }, - &device->blit_state.rs_state); - - anv_CreateDynamicColorBlendState((VkDevice) device, - &(VkDynamicCbStateCreateInfo) { - .sType = VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO - }, - &device->blit_state.cb_state); } static void @@ -498,21 +474,21 @@ meta_prepare_blit(struct anv_cmd_buffer *cmd_buffer, anv_cmd_buffer_save(cmd_buffer, saved_state); - if ((VkPipeline) cmd_buffer->pipeline != device->blit_state.pipeline) + if ((VkPipeline) cmd_buffer->pipeline != device->meta_state.blit.pipeline) anv_CmdBindPipeline((VkCmdBuffer) cmd_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, - device->blit_state.pipeline); + device->meta_state.blit.pipeline); /* We don't need anything here, only set if not already set. */ if (cmd_buffer->rs_state == NULL) anv_CmdBindDynamicStateObject((VkCmdBuffer) cmd_buffer, VK_STATE_BIND_POINT_RASTER, - device->blit_state.rs_state); + device->meta_state.shared.rs_state); saved_state->cb_state = (VkDynamicCbState) cmd_buffer->cb_state; anv_CmdBindDynamicStateObject((VkCmdBuffer) cmd_buffer, VK_STATE_BIND_POINT_COLOR_BLEND, - device->blit_state.cb_state); + device->meta_state.shared.cb_state); } struct blit_region { @@ -599,7 +575,7 @@ meta_emit_blit(struct anv_cmd_buffer *cmd_buffer, VkDescriptorSet set; anv_AllocDescriptorSets((VkDevice) device, 0 /* pool */, VK_DESCRIPTOR_SET_USAGE_ONE_SHOT, - 1, &device->blit_state.ds_layout, &set, &count); + 1, &device->meta_state.blit.ds_layout, &set, &count); anv_UpdateDescriptors((VkDevice) device, set, 1, (const void * []) { &(VkUpdateImages) { @@ -1238,4 +1214,16 @@ anv_device_init_meta(struct anv_device *device) { anv_device_init_meta_clear_state(device); anv_device_init_meta_blit_state(device); + + anv_CreateDynamicRasterState((VkDevice) device, + &(VkDynamicRsStateCreateInfo) { + .sType = VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO, + }, + &device->meta_state.shared.rs_state); + + anv_CreateDynamicColorBlendState((VkDevice) device, + &(VkDynamicCbStateCreateInfo) { + .sType = VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO + }, + &device->meta_state.shared.cb_state); } diff --git a/src/vulkan/private.h b/src/vulkan/private.h index 9a56c1949b8..f2835ba660e 100644 --- a/src/vulkan/private.h +++ b/src/vulkan/private.h @@ -298,17 +298,20 @@ struct anv_instance { struct anv_physical_device physicalDevice; }; -struct anv_clear_state { - VkPipeline pipeline; - VkDynamicRsState rs_state; - VkDynamicCbState cb_state; -}; +struct anv_meta_state { + struct { + VkPipeline pipeline; + } clear; -struct anv_blit_state { - VkPipeline pipeline; - VkDynamicRsState rs_state; - VkDescriptorSetLayout ds_layout; - VkDynamicCbState cb_state; + struct { + VkPipeline pipeline; + VkDescriptorSetLayout ds_layout; + } blit; + + struct { + VkDynamicRsState rs_state; + VkDynamicCbState cb_state; + } shared; }; struct anv_device { @@ -330,8 +333,7 @@ struct anv_device { struct anv_block_pool binding_table_block_pool; struct anv_state_pool surface_state_pool; - struct anv_clear_state clear_state; - struct anv_blit_state blit_state; + struct anv_meta_state meta_state; struct anv_compiler * compiler; struct anv_aub_writer * aub_writer; |