diff options
author | Dave Airlie <airlied@redhat.com> | 2021-12-07 10:54:42 +1000 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2021-12-08 19:06:48 +0000 |
commit | 4e13c7d46ae57907be22baee4807d4cf017c4b73 (patch) | |
tree | 0368a76b5ed794f6c56a73144a4f135569d43f75 | |
parent | 889ac0f1b984c114da6472a394e9b00ced50df64 (diff) |
mesa/st: move Clear to new direct call
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14100>
-rw-r--r-- | src/mesa/main/clear.c | 21 | ||||
-rw-r--r-- | src/mesa/main/dd.h | 7 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_clear.c | 12 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_clear.h | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_context.c | 1 |
5 files changed, 12 insertions, 33 deletions
diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index 2e22c83e030..de9002ece95 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -41,7 +41,7 @@ #include "mtypes.h" #include "state.h" - +#include "state_tracker/st_cb_clear.h" void GLAPIENTRY _mesa_ClearIndex( GLfloat c ) @@ -221,8 +221,7 @@ clear(struct gl_context *ctx, GLbitfield mask, bool no_error) bufferMask |= BUFFER_BIT_ACCUM; } - assert(ctx->Driver.Clear); - ctx->Driver.Clear(ctx, bufferMask); + st_Clear(ctx, bufferMask); } } @@ -377,12 +376,12 @@ clear_bufferiv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, && !ctx->RasterDiscard) { /* Save current stencil clear value, set to 'value', do the * stencil clear and restore the clear value. - * XXX in the future we may have a new ctx->Driver.ClearBuffer() + * XXX in the future we may have a new st_ClearBuffer() * hook instead. */ const GLuint clearSave = ctx->Stencil.Clear; ctx->Stencil.Clear = *value; - ctx->Driver.Clear(ctx, BUFFER_BIT_STENCIL); + st_Clear(ctx, BUFFER_BIT_STENCIL); ctx->Stencil.Clear = clearSave; } break; @@ -402,7 +401,7 @@ clear_bufferiv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, /* set color */ COPY_4V(ctx->Color.ClearColor.i, value); /* clear buffer(s) */ - ctx->Driver.Clear(ctx, mask); + st_Clear(ctx, mask); /* restore color */ ctx->Color.ClearColor = clearSave; } @@ -495,7 +494,7 @@ clear_bufferuiv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, /* set color */ COPY_4V(ctx->Color.ClearColor.ui, value); /* clear buffer(s) */ - ctx->Driver.Clear(ctx, mask); + st_Clear(ctx, mask); /* restore color */ ctx->Color.ClearColor = clearSave; } @@ -590,7 +589,7 @@ clear_bufferfv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, && !ctx->RasterDiscard) { /* Save current depth clear value, set to 'value', do the * depth clear and restore the clear value. - * XXX in the future we may have a new ctx->Driver.ClearBuffer() + * XXX in the future we may have a new st_ClearBuffer() * hook instead. */ const GLclampd clearSave = ctx->Depth.Clear; @@ -608,7 +607,7 @@ clear_bufferfv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, _mesa_has_depth_float_channel(rb->InternalFormat); ctx->Depth.Clear = is_float_depth ? *value : SATURATE(*value); - ctx->Driver.Clear(ctx, BUFFER_BIT_DEPTH); + st_Clear(ctx, BUFFER_BIT_DEPTH); ctx->Depth.Clear = clearSave; } /* clear depth buffer to value */ @@ -629,7 +628,7 @@ clear_bufferfv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, /* set color */ COPY_4V(ctx->Color.ClearColor.f, value); /* clear buffer(s) */ - ctx->Driver.Clear(ctx, mask); + st_Clear(ctx, mask); /* restore color */ ctx->Color.ClearColor = clearSave; } @@ -759,7 +758,7 @@ clear_bufferfi(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, ctx->Stencil.Clear = stencil; /* clear buffers */ - ctx->Driver.Clear(ctx, mask); + st_Clear(ctx, mask); /* restore */ ctx->Depth.Clear = clearDepthSave; diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 1fb62f52b01..f613238a6c0 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -135,13 +135,6 @@ struct dd_function_table { void (*Flush)(struct gl_context *ctx, unsigned gallium_flush_flags); /** - * Clear the color/depth/stencil/accum buffer(s). - * \param buffers a bitmask of BUFFER_BIT_* flags indicating which - * renderbuffers need to be cleared. - */ - void (*Clear)( struct gl_context *ctx, GLbitfield buffers ); - - /** * Execute glRasterPos, updating the ctx->Current.Raster fields */ void (*RasterPos)( struct gl_context *ctx, const GLfloat v[4] ); diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 623c4355a91..f13db1a27b9 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -419,11 +419,7 @@ is_stencil_masked(struct gl_context *ctx, struct gl_renderbuffer *rb) return (ctx->Stencil.WriteMask[0] & stencilMax) != stencilMax; } - -/** - * Called via ctx->Driver.Clear() - */ -static void +void st_Clear(struct gl_context *ctx, GLbitfield mask) { struct st_context *st = st_context(ctx); @@ -561,9 +557,3 @@ st_Clear(struct gl_context *ctx, GLbitfield mask) _mesa_clear_accum_buffer(ctx); } - -void -st_init_clear_functions(struct dd_function_table *functions) -{ - functions->Clear = st_Clear; -} diff --git a/src/mesa/state_tracker/st_cb_clear.h b/src/mesa/state_tracker/st_cb_clear.h index 6868aae876e..76054ed045c 100644 --- a/src/mesa/state_tracker/st_cb_clear.h +++ b/src/mesa/state_tracker/st_cb_clear.h @@ -41,9 +41,7 @@ extern void st_destroy_clear(struct st_context *st); -extern void -st_init_clear_functions(struct dd_function_table *functions); - +void st_Clear(struct gl_context *ctx, GLbitfield mask); #endif /* ST_CB_CLEAR_H */ diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 2f744b60e2a..49f499e51c5 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -930,7 +930,6 @@ st_init_driver_functions(struct pipe_screen *screen, st_init_draw_functions(screen, functions); st_init_blit_functions(functions); st_init_bufferobject_functions(screen, functions); - st_init_clear_functions(functions); st_init_bitmap_functions(functions); st_init_copy_image_functions(functions); st_init_drawpixels_functions(functions); |