It would be better if the function wasn't inline and was placed before st_invalidate_state to keep those two together.
Marek On Wed, Jun 7, 2017 at 8:02 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote: > --- > src/mesa/state_tracker/st_cb_fbo.c | 5 +++-- > src/mesa/state_tracker/st_context.c | 15 +++------------ > src/mesa/state_tracker/st_context.h | 16 +++++++++++++++- > src/mesa/state_tracker/st_manager.c | 2 +- > 4 files changed, 22 insertions(+), 16 deletions(-) > > diff --git a/src/mesa/state_tracker/st_cb_fbo.c > b/src/mesa/state_tracker/st_cb_fbo.c > index f908225..d23cec8 100644 > --- a/src/mesa/state_tracker/st_cb_fbo.c > +++ b/src/mesa/state_tracker/st_cb_fbo.c > @@ -500,45 +500,46 @@ st_render_texture(struct gl_context *ctx, > strb->rtt_layered = att->Layered; > pipe_resource_reference(&strb->texture, pt); > > st_update_renderbuffer_surface(st, strb); > > /* Invalidate buffer state so that the pipe's framebuffer state > * gets updated. > * 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 > * attached a new renderbuffer. > */ > ctx->NewState |= _NEW_BUFFERS; > } > > > /** > * Called via ctx->Driver.FinishRenderTexture. > */ > 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) > return; > > strb->is_rtt = FALSE; > > /* restore previous framebuffer state */ > - st_invalidate_state(ctx, _NEW_BUFFERS); > + st_invalidate_buffers(st); > } > > > /** Debug helper */ > static void > st_fbo_invalid(const char *reason) > { > if (MESA_DEBUG_FLAGS & DEBUG_INCOMPLETE_FBO) { > _mesa_debug(NULL, "Invalid FBO: %s\n", reason); > } > diff --git a/src/mesa/state_tracker/st_context.c > b/src/mesa/state_tracker/st_context.c > index c901764..3207e95 100644 > --- a/src/mesa/state_tracker/st_context.c > +++ b/src/mesa/state_tracker/st_context.c > @@ -157,36 +157,27 @@ st_get_active_states(struct gl_context *ctx) > active_shader_states |= cp->affected_states; > > /* Mark non-shader-resource shader states as "always active". */ > return active_shader_states | ~ST_ALL_SHADER_RESOURCES; > } > > > /** > * 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. > */ > if (new_state & (_NEW_DEPTH | > _NEW_STENCIL)) > st->dirty |= ST_NEW_DSA; > > if (new_state & _NEW_PROGRAM) > st->dirty |= ST_NEW_RASTERIZER; > diff --git a/src/mesa/state_tracker/st_context.h > b/src/mesa/state_tracker/st_context.h > index 520cd8d..dd38a7f 100644 > --- a/src/mesa/state_tracker/st_context.h > +++ b/src/mesa/state_tracker/st_context.h > @@ -295,21 +295,35 @@ struct st_framebuffer > enum st_attachment_type statts[ST_ATTACHMENT_COUNT]; > unsigned num_statts; > int32_t stamp; > int32_t iface_stamp; > }; > > > 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); > +static inline 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; > +} > > /* Invalidate the readpixels cache to ensure we don't read stale data. > */ > static inline void > st_invalidate_readpix_cache(struct st_context *st) > { > if (unlikely(st->readpix_cache.src)) { > pipe_resource_reference(&st->readpix_cache.src, NULL); > pipe_resource_reference(&st->readpix_cache.cache, NULL); > } > diff --git a/src/mesa/state_tracker/st_manager.c > b/src/mesa/state_tracker/st_manager.c > index cc781f4..b8abd76 100644 > --- a/src/mesa/state_tracker/st_manager.c > +++ b/src/mesa/state_tracker/st_manager.c > @@ -899,21 +899,21 @@ st_manager_add_color_renderbuffer(struct st_context *st, > st_framebuffer_update_attachments(stfb); > > /* > * Force a call to the state tracker manager to validate the > * new renderbuffer. It might be that there is a window system > * renderbuffer available. > */ > 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; > } > > static unsigned > get_version(struct pipe_screen *screen, > struct st_config_options *options, gl_api api) > { > struct gl_constants consts = {0}; > struct gl_extensions extensions = {0}; > -- > 2.9.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev