mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
st/mesa: add readpix_cache structure
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
b74c23138c
commit
615ba11563
3 changed files with 22 additions and 0 deletions
|
|
@ -218,6 +218,14 @@ fail:
|
|||
return success;
|
||||
}
|
||||
|
||||
/* Invalidate the readpixels cache to ensure we don't read stale data.
|
||||
*/
|
||||
void st_invalidate_readpix_cache(struct st_context *st)
|
||||
{
|
||||
pipe_resource_reference(&st->readpix_cache.src, NULL);
|
||||
pipe_resource_reference(&st->readpix_cache.cache, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a staging texture and blit the requested region to it.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -184,6 +184,9 @@ st_destroy_context_priv(struct st_context *st)
|
|||
free(st->drawpix_cache.image);
|
||||
pipe_resource_reference(&st->drawpix_cache.texture, NULL);
|
||||
|
||||
/* free glReadPixels cache data */
|
||||
st_invalidate_readpix_cache(st);
|
||||
|
||||
cso_destroy_context(st->cso_context);
|
||||
free( st );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -228,6 +228,16 @@ struct st_context
|
|||
struct pipe_resource *texture;
|
||||
} drawpix_cache;
|
||||
|
||||
/** for glReadPixels */
|
||||
struct {
|
||||
struct pipe_resource *src;
|
||||
struct pipe_resource *cache;
|
||||
enum pipe_format dst_format;
|
||||
unsigned level;
|
||||
unsigned layer;
|
||||
unsigned hits;
|
||||
} readpix_cache;
|
||||
|
||||
/** for glClear */
|
||||
struct {
|
||||
struct pipe_rasterizer_state raster;
|
||||
|
|
@ -306,6 +316,7 @@ extern void st_init_driver_functions(struct pipe_screen *screen,
|
|||
|
||||
void st_invalidate_state(struct gl_context * ctx, GLbitfield new_state);
|
||||
|
||||
void st_invalidate_readpix_cache(struct st_context *st);
|
||||
|
||||
|
||||
#define Y_0_TOP 1
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue