enum anv_cmd_dirty_bits {
ANV_CMD_DIRTY_PIPELINE = 1 << 0,
ANV_CMD_DIRTY_INDEX_BUFFER = 1 << 1,
- ANV_CMD_DIRTY_RENDER_TARGETS = 1 << 2,
- ANV_CMD_DIRTY_XFB_ENABLE = 1 << 3,
- ANV_CMD_DIRTY_RESTART_INDEX = 1 << 4,
- ANV_CMD_DIRTY_OCCLUSION_QUERY_ACTIVE = 1 << 5,
+ ANV_CMD_DIRTY_RENDER_AREA = 1 << 2,
+ ANV_CMD_DIRTY_RENDER_TARGETS = 1 << 3,
+ ANV_CMD_DIRTY_XFB_ENABLE = 1 << 4,
+ ANV_CMD_DIRTY_RESTART_INDEX = 1 << 5,
+ ANV_CMD_DIRTY_OCCLUSION_QUERY_ACTIVE = 1 << 6,
};
typedef enum anv_cmd_dirty_bits anv_cmd_dirty_mask_t;
anv_cmd_graphic_state_update_has_uint_rt(gfx);
- cmd_buffer->state.gfx.dirty |= ANV_CMD_DIRTY_RENDER_TARGETS;
+ cmd_buffer->state.gfx.dirty |= ANV_CMD_DIRTY_RENDER_AREA |
+ ANV_CMD_DIRTY_RENDER_TARGETS;
}
}
trace_intel_begin_render_pass(&cmd_buffer->trace);
gfx->rendering_flags = pRenderingInfo->flags;
- gfx->render_area = pRenderingInfo->renderArea;
gfx->view_mask = pRenderingInfo->viewMask;
gfx->layer_count = pRenderingInfo->layerCount;
gfx->samples = 0;
+ if (gfx->render_area.offset.x != pRenderingInfo->renderArea.offset.x ||
+ gfx->render_area.offset.y != pRenderingInfo->renderArea.offset.y ||
+ gfx->render_area.extent.width != pRenderingInfo->renderArea.extent.width ||
+ gfx->render_area.extent.height != pRenderingInfo->renderArea.extent.height) {
+ gfx->render_area = pRenderingInfo->renderArea;
+ gfx->dirty |= ANV_CMD_DIRTY_RENDER_AREA;
+ }
+
const bool is_multiview = gfx->view_mask != 0;
const VkRect2D render_area = gfx->render_area;
const uint32_t layers =
gfx->alpha_blend_zero ? 0.0f : dyn->cb.blend_constants[3]);
}
- if ((gfx->dirty & ANV_CMD_DIRTY_RENDER_TARGETS) ||
+ if ((gfx->dirty & ANV_CMD_DIRTY_RENDER_AREA) ||
BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_VP_VIEWPORTS) ||
BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_VP_SCISSORS) ||
BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_RS_DEPTH_CLAMP_ENABLE) ||
}
}
- if ((gfx->dirty & ANV_CMD_DIRTY_RENDER_TARGETS) ||
+ if ((gfx->dirty & ANV_CMD_DIRTY_RENDER_AREA) ||
BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_VP_SCISSORS) ||
BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_VP_VIEWPORTS)) {
const VkRect2D *scissors = dyn->vp.scissors;