mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
st/mesa: add st_invalidate_buffers() helper
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
parent
df27aba422
commit
f627ac6e35
4 changed files with 26 additions and 16 deletions
|
|
@ -504,7 +504,7 @@ st_render_texture(struct gl_context *ctx,
|
|||
* That's where the new renderbuffer (which we just created) gets
|
||||
* passed to the pipe as a (color/depth) render target.
|
||||
*/
|
||||
st_invalidate_state(ctx, _NEW_BUFFERS);
|
||||
st_invalidate_buffers(st);
|
||||
|
||||
|
||||
/* Need to trigger a call to update_framebuffer() since we just
|
||||
|
|
@ -520,6 +520,7 @@ st_render_texture(struct gl_context *ctx,
|
|||
static void
|
||||
st_finish_render_texture(struct gl_context *ctx, struct gl_renderbuffer *rb)
|
||||
{
|
||||
struct st_context *st = st_context(ctx);
|
||||
struct st_renderbuffer *strb = st_renderbuffer(rb);
|
||||
|
||||
if (!strb)
|
||||
|
|
@ -528,7 +529,7 @@ st_finish_render_texture(struct gl_context *ctx, struct gl_renderbuffer *rb)
|
|||
strb->is_rtt = FALSE;
|
||||
|
||||
/* restore previous framebuffer state */
|
||||
st_invalidate_state(ctx, _NEW_BUFFERS);
|
||||
st_invalidate_buffers(st);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -161,25 +161,33 @@ st_get_active_states(struct gl_context *ctx)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
st_invalidate_buffers(struct st_context *st)
|
||||
{
|
||||
st->dirty |= ST_NEW_BLEND |
|
||||
ST_NEW_DSA |
|
||||
ST_NEW_FB_STATE |
|
||||
ST_NEW_SAMPLE_MASK |
|
||||
ST_NEW_SAMPLE_SHADING |
|
||||
ST_NEW_FS_STATE |
|
||||
ST_NEW_POLY_STIPPLE |
|
||||
ST_NEW_VIEWPORT |
|
||||
ST_NEW_RASTERIZER |
|
||||
ST_NEW_SCISSOR |
|
||||
ST_NEW_WINDOW_RECTANGLES;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.UpdateState()
|
||||
*/
|
||||
void st_invalidate_state(struct gl_context * ctx, GLbitfield new_state)
|
||||
static void
|
||||
st_invalidate_state(struct gl_context * ctx, GLbitfield new_state)
|
||||
{
|
||||
struct st_context *st = st_context(ctx);
|
||||
|
||||
if (new_state & _NEW_BUFFERS) {
|
||||
st->dirty |= ST_NEW_BLEND |
|
||||
ST_NEW_DSA |
|
||||
ST_NEW_FB_STATE |
|
||||
ST_NEW_SAMPLE_MASK |
|
||||
ST_NEW_SAMPLE_SHADING |
|
||||
ST_NEW_FS_STATE |
|
||||
ST_NEW_POLY_STIPPLE |
|
||||
ST_NEW_VIEWPORT |
|
||||
ST_NEW_RASTERIZER |
|
||||
ST_NEW_SCISSOR |
|
||||
ST_NEW_WINDOW_RECTANGLES;
|
||||
st_invalidate_buffers(st);
|
||||
} else {
|
||||
/* These set a subset of flags set by _NEW_BUFFERS, so we only have to
|
||||
* check them when _NEW_BUFFERS isn't set.
|
||||
|
|
|
|||
|
|
@ -305,7 +305,8 @@ struct st_framebuffer
|
|||
extern void st_init_driver_functions(struct pipe_screen *screen,
|
||||
struct dd_function_table *functions);
|
||||
|
||||
void st_invalidate_state(struct gl_context * ctx, GLbitfield new_state);
|
||||
void
|
||||
st_invalidate_buffers(struct st_context *st);
|
||||
|
||||
/* Invalidate the readpixels cache to ensure we don't read stale data.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -911,7 +911,7 @@ st_manager_add_color_renderbuffer(struct st_context *st,
|
|||
if (stfb->iface)
|
||||
stfb->iface_stamp = p_atomic_read(&stfb->iface->stamp) - 1;
|
||||
|
||||
st_invalidate_state(st->ctx, _NEW_BUFFERS);
|
||||
st_invalidate_buffers(st);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue