mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
mesa/st: Convert st_cb_texture to use st_context_invalidate_state
Replace CSO save/restore of atom-backed states with st_context_invalidate_state() for both PBO upload and download paths. Only stream outputs, render condition, and pause queries (no atoms) still use CSO save/restore. Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40592>
This commit is contained in:
parent
d3b3bb69de
commit
62efee1860
1 changed files with 45 additions and 31 deletions
|
|
@ -1748,19 +1748,10 @@ try_pbo_upload_common(struct gl_context *ctx,
|
|||
if (!fs)
|
||||
return false;
|
||||
|
||||
cso_save_state(cso, (CSO_BIT_VERTEX_ELEMENTS |
|
||||
CSO_BIT_FRAMEBUFFER |
|
||||
CSO_BIT_VIEWPORT |
|
||||
CSO_BIT_BLEND |
|
||||
CSO_BIT_DEPTH_STENCIL_ALPHA |
|
||||
CSO_BIT_RASTERIZER |
|
||||
CSO_BIT_STREAM_OUTPUTS |
|
||||
/* Save only states that have no st_atom. */
|
||||
cso_save_state(cso, (CSO_BIT_STREAM_OUTPUTS |
|
||||
(st->active_queries ? CSO_BIT_PAUSE_QUERIES : 0) |
|
||||
CSO_BIT_SAMPLE_MASK |
|
||||
CSO_BIT_MIN_SAMPLES |
|
||||
CSO_BIT_RENDER_CONDITION |
|
||||
CSO_BIT_MESH_SHADER |
|
||||
CSO_BITS_VERTEX_PIPE_SHADERS));
|
||||
CSO_BIT_RENDER_CONDITION));
|
||||
|
||||
cso_set_sample_mask(cso, ~0);
|
||||
cso_set_min_samples(cso, 1);
|
||||
|
|
@ -1833,9 +1824,25 @@ fail:
|
|||
cso_restore_state(cso, CSO_UNBIND_FS_SAMPLERVIEWS);
|
||||
st->state.num_sampler_views[MESA_SHADER_FRAGMENT] = 0;
|
||||
|
||||
ctx->Array.NewVertexElements = true;
|
||||
ST_SET_STATE3(ctx->NewDriverState, ST_NEW_VERTEX_ARRAYS,
|
||||
ST_NEW_FS_CONSTANTS, ST_NEW_FS_SAMPLER_VIEWS);
|
||||
/* Invalidate all states this meta-op modified. The atoms will
|
||||
* re-derive them from GL state before the next draw.
|
||||
*/
|
||||
st_context_invalidate_state(st,
|
||||
ST_INVALIDATE_VERTEX_BUFFERS |
|
||||
ST_INVALIDATE_FB_STATE |
|
||||
ST_INVALIDATE_VIEWPORT |
|
||||
ST_INVALIDATE_BLEND |
|
||||
ST_INVALIDATE_DSA |
|
||||
ST_INVALIDATE_RASTERIZER |
|
||||
ST_INVALIDATE_SAMPLE_MASK |
|
||||
ST_INVALIDATE_SAMPLE_SHADING |
|
||||
ST_INVALIDATE_FS_CONSTBUF0 |
|
||||
ST_INVALIDATE_VS_STATE |
|
||||
ST_INVALIDATE_FS_STATE |
|
||||
ST_INVALIDATE_GS_STATE |
|
||||
ST_INVALIDATE_TCS_STATE |
|
||||
ST_INVALIDATE_TES_STATE |
|
||||
ST_INVALIDATE_MESH_STATE);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
|
@ -2009,19 +2016,10 @@ try_pbo_download(struct st_context *st,
|
|||
if (!st_pbo_addresses_pixelstore(st, gl_target, dims == 3, pack, pixels, &addr))
|
||||
return false;
|
||||
|
||||
cso_save_state(cso, (CSO_BIT_VERTEX_ELEMENTS |
|
||||
CSO_BIT_FRAMEBUFFER |
|
||||
CSO_BIT_VIEWPORT |
|
||||
CSO_BIT_BLEND |
|
||||
CSO_BIT_DEPTH_STENCIL_ALPHA |
|
||||
CSO_BIT_RASTERIZER |
|
||||
CSO_BIT_STREAM_OUTPUTS |
|
||||
/* Save only states that have no st_atom. */
|
||||
cso_save_state(cso, (CSO_BIT_STREAM_OUTPUTS |
|
||||
(st->active_queries ? CSO_BIT_PAUSE_QUERIES : 0) |
|
||||
CSO_BIT_SAMPLE_MASK |
|
||||
CSO_BIT_MIN_SAMPLES |
|
||||
CSO_BIT_RENDER_CONDITION |
|
||||
CSO_BIT_MESH_SHADER |
|
||||
CSO_BITS_VERTEX_PIPE_SHADERS));
|
||||
CSO_BIT_RENDER_CONDITION));
|
||||
|
||||
cso_set_sample_mask(cso, ~0);
|
||||
cso_set_min_samples(cso, 1);
|
||||
|
|
@ -2114,10 +2112,26 @@ fail:
|
|||
cso_restore_state(cso, CSO_UNBIND_FS_SAMPLERVIEWS | CSO_UNBIND_FS_IMAGE0);
|
||||
st->state.num_sampler_views[MESA_SHADER_FRAGMENT] = 0;
|
||||
|
||||
st->ctx->Array.NewVertexElements = true;
|
||||
ST_SET_STATE4(st->ctx->NewDriverState, ST_NEW_FS_CONSTANTS,
|
||||
ST_NEW_FS_IMAGES, ST_NEW_FS_SAMPLER_VIEWS,
|
||||
ST_NEW_VERTEX_ARRAYS);
|
||||
/* Invalidate all states this meta-op modified. The atoms will
|
||||
* re-derive them from GL state before the next draw.
|
||||
*/
|
||||
st_context_invalidate_state(st,
|
||||
ST_INVALIDATE_VERTEX_BUFFERS |
|
||||
ST_INVALIDATE_FB_STATE |
|
||||
ST_INVALIDATE_VIEWPORT |
|
||||
ST_INVALIDATE_BLEND |
|
||||
ST_INVALIDATE_DSA |
|
||||
ST_INVALIDATE_RASTERIZER |
|
||||
ST_INVALIDATE_SAMPLE_MASK |
|
||||
ST_INVALIDATE_SAMPLE_SHADING |
|
||||
ST_INVALIDATE_FS_CONSTBUF0 |
|
||||
ST_INVALIDATE_FS_IMAGES |
|
||||
ST_INVALIDATE_VS_STATE |
|
||||
ST_INVALIDATE_FS_STATE |
|
||||
ST_INVALIDATE_GS_STATE |
|
||||
ST_INVALIDATE_TCS_STATE |
|
||||
ST_INVALIDATE_TES_STATE |
|
||||
ST_INVALIDATE_MESH_STATE);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue