mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-30 21:21:39 +02:00
anv/meta: Don't set the dynamic state for disabled operations
CmdSet* functions dirty the CommandBuffer's dynamic state. This causes the new state to be emitted when CmdDraw is called. Since we don't need the state that would be emitted, don't call the CmdSet* functions. Signed-off-by: Nanley Chery <nanley.g.chery@intel.com> Reviewed-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
This commit is contained in:
parent
76b0ba087c
commit
9fae6ee026
4 changed files with 3 additions and 82 deletions
|
|
@ -115,8 +115,7 @@ static void
|
|||
meta_prepare_blit(struct anv_cmd_buffer *cmd_buffer,
|
||||
struct anv_meta_saved_state *saved_state)
|
||||
{
|
||||
anv_meta_save(saved_state, cmd_buffer,
|
||||
(1 << VK_DYNAMIC_STATE_VIEWPORT));
|
||||
anv_meta_save(saved_state, cmd_buffer, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -306,16 +305,6 @@ meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
|
|||
VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
|
||||
}
|
||||
|
||||
anv_CmdSetViewport(anv_cmd_buffer_to_handle(cmd_buffer), 0, 1,
|
||||
&(VkViewport) {
|
||||
.x = 0.0f,
|
||||
.y = 0.0f,
|
||||
.width = dest_iview->extent.width,
|
||||
.height = dest_iview->extent.height,
|
||||
.minDepth = 0.0f,
|
||||
.maxDepth = 1.0f,
|
||||
});
|
||||
|
||||
anv_CmdBindDescriptorSets(anv_cmd_buffer_to_handle(cmd_buffer),
|
||||
VK_PIPELINE_BIND_POINT_GRAPHICS,
|
||||
device->meta_state.blit.pipeline_layout, 0, 1,
|
||||
|
|
|
|||
|
|
@ -344,17 +344,6 @@ blit2d_bind_dst(struct anv_cmd_buffer *cmd_buffer,
|
|||
.height = height,
|
||||
.layers = 1
|
||||
}, &cmd_buffer->pool->alloc, &tmp->fb);
|
||||
|
||||
|
||||
anv_CmdSetViewport(anv_cmd_buffer_to_handle(cmd_buffer), 0, 1,
|
||||
&(VkViewport) {
|
||||
.x = 0.0f,
|
||||
.y = 0.0f,
|
||||
.width = width,
|
||||
.height = height,
|
||||
.minDepth = 0.0f,
|
||||
.maxDepth = 1.0f,
|
||||
});
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -377,8 +366,7 @@ void
|
|||
anv_meta_begin_blit2d(struct anv_cmd_buffer *cmd_buffer,
|
||||
struct anv_meta_saved_state *save)
|
||||
{
|
||||
anv_meta_save(save, cmd_buffer,
|
||||
(1 << VK_DYNAMIC_STATE_VIEWPORT));
|
||||
anv_meta_save(save, cmd_buffer, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ meta_clear_begin(struct anv_meta_saved_state *saved_state,
|
|||
{
|
||||
anv_meta_save(saved_state, cmd_buffer,
|
||||
(1 << VK_DYNAMIC_STATE_VIEWPORT) |
|
||||
(1 << VK_DYNAMIC_STATE_SCISSOR) |
|
||||
(1 << VK_DYNAMIC_STATE_STENCIL_REFERENCE) |
|
||||
(1 << VK_DYNAMIC_STATE_STENCIL_WRITE_MASK));
|
||||
|
||||
|
|
@ -397,26 +396,6 @@ emit_color_clear(struct anv_cmd_buffer *cmd_buffer,
|
|||
.offset = state.offset,
|
||||
};
|
||||
|
||||
ANV_CALL(CmdSetViewport)(cmd_buffer_h, 0, 1,
|
||||
(VkViewport[]) {
|
||||
{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.width = fb->width,
|
||||
.height = fb->height,
|
||||
.minDepth = 0.0,
|
||||
.maxDepth = 1.0,
|
||||
},
|
||||
});
|
||||
|
||||
ANV_CALL(CmdSetScissor)(cmd_buffer_h, 0, 1,
|
||||
(VkRect2D[]) {
|
||||
{
|
||||
.offset = { 0, 0 },
|
||||
.extent = { fb->width, fb->height },
|
||||
}
|
||||
});
|
||||
|
||||
ANV_CALL(CmdBindVertexBuffers)(cmd_buffer_h, 0, 1,
|
||||
(VkBuffer[]) { anv_buffer_to_handle(&vertex_buffer) },
|
||||
(VkDeviceSize[]) { 0 });
|
||||
|
|
@ -596,14 +575,6 @@ emit_depthstencil_clear(struct anv_cmd_buffer *cmd_buffer,
|
|||
},
|
||||
});
|
||||
|
||||
ANV_CALL(CmdSetScissor)(cmd_buffer_h, 0, 1,
|
||||
(VkRect2D[]) {
|
||||
{
|
||||
.offset = { 0, 0 },
|
||||
.extent = { fb->width, fb->height },
|
||||
}
|
||||
});
|
||||
|
||||
if (aspects & VK_IMAGE_ASPECT_STENCIL_BIT) {
|
||||
ANV_CALL(CmdSetStencilReference)(cmd_buffer_h, VK_STENCIL_FACE_FRONT_BIT,
|
||||
clear_value.stencil);
|
||||
|
|
|
|||
|
|
@ -41,9 +41,7 @@ static void
|
|||
meta_resolve_save(struct anv_meta_saved_state *saved_state,
|
||||
struct anv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
anv_meta_save(saved_state, cmd_buffer,
|
||||
(1 << VK_DYNAMIC_STATE_VIEWPORT) |
|
||||
(1 << VK_DYNAMIC_STATE_SCISSOR));
|
||||
anv_meta_save(saved_state, cmd_buffer, 0);
|
||||
|
||||
cmd_buffer->state.dynamic.viewport.count = 0;
|
||||
cmd_buffer->state.dynamic.scissor.count = 0;
|
||||
|
|
@ -481,7 +479,6 @@ emit_resolve(struct anv_cmd_buffer *cmd_buffer,
|
|||
struct anv_device *device = cmd_buffer->device;
|
||||
VkDevice device_h = anv_device_to_handle(device);
|
||||
VkCommandBuffer cmd_buffer_h = anv_cmd_buffer_to_handle(cmd_buffer);
|
||||
const struct anv_framebuffer *fb = cmd_buffer->state.framebuffer;
|
||||
const struct anv_image *src_image = src_iview->image;
|
||||
|
||||
const struct vertex_attrs vertex_data[3] = {
|
||||
|
|
@ -609,30 +606,6 @@ emit_resolve(struct anv_cmd_buffer *cmd_buffer,
|
|||
/*copyCount*/ 0,
|
||||
/*copies */ NULL);
|
||||
|
||||
ANV_CALL(CmdSetViewport)(cmd_buffer_h,
|
||||
/*firstViewport*/ 0,
|
||||
/*viewportCount*/ 1,
|
||||
(VkViewport[]) {
|
||||
{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.width = fb->width,
|
||||
.height = fb->height,
|
||||
.minDepth = 0.0,
|
||||
.maxDepth = 1.0,
|
||||
},
|
||||
});
|
||||
|
||||
ANV_CALL(CmdSetScissor)(cmd_buffer_h,
|
||||
/*firstScissor*/ 0,
|
||||
/*scissorCount*/ 1,
|
||||
(VkRect2D[]) {
|
||||
{
|
||||
.offset = { 0, 0 },
|
||||
.extent = (VkExtent2D) { fb->width, fb->height },
|
||||
},
|
||||
});
|
||||
|
||||
VkPipeline pipeline_h = *get_pipeline_h(device, src_image->samples);
|
||||
ANV_FROM_HANDLE(anv_pipeline, pipeline, pipeline_h);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue