mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 17:50:11 +01:00
iris: Refactor depth/stencil buffer pinning into a helper.
This avoids the code duplication that caused me to put things in the wrong place in the previous commit. One used to have extra flushes, but we moved those out so now these are identical and can be easily shared.
This commit is contained in:
parent
9302414f8b
commit
863e810a19
1 changed files with 28 additions and 37 deletions
|
|
@ -3943,6 +3943,32 @@ iris_use_optional_res(struct iris_batch *batch,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pin_depth_and_stencil_buffers(struct iris_context *ice,
|
||||
struct iris_batch *batch,
|
||||
struct pipe_surface *zsbuf)
|
||||
{
|
||||
if (!zsbuf)
|
||||
return;
|
||||
|
||||
struct iris_resource *zres, *sres;
|
||||
iris_get_depth_stencil_resources(zsbuf->texture, &zres, &sres);
|
||||
|
||||
if (zres) {
|
||||
iris_use_pinned_bo(batch, zres->bo,
|
||||
ice->state.depth_writes_enabled);
|
||||
if (zres->aux.bo) {
|
||||
iris_use_pinned_bo(batch, zres->aux.bo,
|
||||
ice->state.depth_writes_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
if (sres) {
|
||||
iris_use_pinned_bo(batch, sres->bo,
|
||||
ice->state.stencil_writes_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
|
|
@ -4063,25 +4089,7 @@ iris_restore_render_saved_bos(struct iris_context *ice,
|
|||
|
||||
if (clean & IRIS_DIRTY_DEPTH_BUFFER) {
|
||||
struct pipe_framebuffer_state *cso_fb = &ice->state.framebuffer;
|
||||
|
||||
if (cso_fb->zsbuf) {
|
||||
struct iris_resource *zres, *sres;
|
||||
iris_get_depth_stencil_resources(cso_fb->zsbuf->texture,
|
||||
&zres, &sres);
|
||||
if (zres) {
|
||||
iris_use_pinned_bo(batch, zres->bo,
|
||||
ice->state.depth_writes_enabled);
|
||||
if (zres->aux.bo) {
|
||||
iris_use_pinned_bo(batch, zres->aux.bo,
|
||||
ice->state.depth_writes_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
if (sres) {
|
||||
iris_use_pinned_bo(batch, sres->bo,
|
||||
ice->state.stencil_writes_enabled);
|
||||
}
|
||||
}
|
||||
pin_depth_and_stencil_buffers(ice, batch, cso_fb->zsbuf);
|
||||
}
|
||||
|
||||
if (draw->index_size == 0 && ice->state.last_res.index_buffer) {
|
||||
|
|
@ -4630,24 +4638,7 @@ iris_upload_dirty_render_state(struct iris_context *ice,
|
|||
|
||||
iris_batch_emit(batch, cso_z->packets, sizeof(cso_z->packets));
|
||||
|
||||
if (cso_fb->zsbuf) {
|
||||
struct iris_resource *zres, *sres;
|
||||
iris_get_depth_stencil_resources(cso_fb->zsbuf->texture,
|
||||
&zres, &sres);
|
||||
if (zres) {
|
||||
iris_use_pinned_bo(batch, zres->bo,
|
||||
ice->state.depth_writes_enabled);
|
||||
if (zres->aux.bo) {
|
||||
iris_use_pinned_bo(batch, zres->aux.bo,
|
||||
ice->state.depth_writes_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
if (sres) {
|
||||
iris_use_pinned_bo(batch, sres->bo,
|
||||
ice->state.stencil_writes_enabled);
|
||||
}
|
||||
}
|
||||
pin_depth_and_stencil_buffers(ice, batch, cso_fb->zsbuf);
|
||||
}
|
||||
|
||||
if (dirty & IRIS_DIRTY_POLYGON_STIPPLE) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue