mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 12:50:10 +01:00
gbm: mark surface buffers as explicit flushed
Some drivers are able to optimize buffer usage when it is known that external visibility of buffer changes only needs to be guaranteed after well defined transition points, like eglSwapBuffers. Add a BO flag to specify this behavior and set it with GBM surfaces. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Acked-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30077>
This commit is contained in:
parent
3786f5c27a
commit
c49a71c03c
2 changed files with 13 additions and 3 deletions
|
|
@ -895,8 +895,14 @@ gbm_dri_bo_create(struct gbm_device *gbm,
|
|||
dri_use |= __DRI_IMAGE_USE_LINEAR;
|
||||
if (usage & GBM_BO_USE_PROTECTED)
|
||||
dri_use |= __DRI_IMAGE_USE_PROTECTED;
|
||||
if (usage & GBM_BO_USE_FRONT_RENDERING)
|
||||
if (usage & GBM_BO_USE_FRONT_RENDERING) {
|
||||
assert (!(usage & GBM_BO_EXPLICIT_FLUSH));
|
||||
dri_use |= __DRI_IMAGE_USE_FRONT_RENDERING;
|
||||
}
|
||||
if (usage & GBM_BO_EXPLICIT_FLUSH) {
|
||||
assert (!(usage & GBM_BO_USE_FRONT_RENDERING));
|
||||
dri_use |= __DRI_IMAGE_USE_BACKBUFFER;
|
||||
}
|
||||
|
||||
/* Gallium drivers requires shared in order to get the handle/stride */
|
||||
dri_use |= __DRI_IMAGE_USE_SHARE;
|
||||
|
|
@ -1100,7 +1106,7 @@ gbm_dri_surface_create(struct gbm_device *gbm,
|
|||
surf->base.v0.width = width;
|
||||
surf->base.v0.height = height;
|
||||
surf->base.v0.format = core->v0.format_canonicalize(format);
|
||||
surf->base.v0.flags = flags;
|
||||
surf->base.v0.flags = flags | GBM_BO_EXPLICIT_FLUSH;
|
||||
if (!modifiers) {
|
||||
assert(!count);
|
||||
return &surf->base;
|
||||
|
|
|
|||
|
|
@ -330,7 +330,11 @@ enum gbm_bo_flags {
|
|||
*/
|
||||
GBM_BO_FIXED_COMPRESSION_12BPC = (13 << 7),
|
||||
|
||||
/* next available value is (1 << 11) */
|
||||
/**
|
||||
* This buffer will be used with an API with well defined transition points
|
||||
* between context internal usage and external visibility.
|
||||
*/
|
||||
GBM_BO_EXPLICIT_FLUSH = (1 << 11),
|
||||
};
|
||||
|
||||
#define GBM_BO_FIXED_COMPRESSION_MASK (((1 << 11) - 1) & ~((1 << 7) - 1))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue