mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
dri: move swapinterval functions from loader to dri frontend
Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30450>
This commit is contained in:
parent
98b62ee57f
commit
0d83c570af
5 changed files with 55 additions and 53 deletions
|
|
@ -1180,3 +1180,51 @@ const __DRIimageDriverExtension driImageDriverExtension = {
|
|||
.createContextAttribs = driCreateContextAttribs,
|
||||
.createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
|
||||
|
||||
static int dri_vblank_mode(__DRIscreen *driScreen, const __DRI2configQueryExtension *config)
|
||||
{
|
||||
GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
|
||||
|
||||
if (config)
|
||||
config->configQueryi(driScreen, "vblank_mode", &vblank_mode);
|
||||
|
||||
return vblank_mode;
|
||||
}
|
||||
|
||||
int dri_get_initial_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config)
|
||||
{
|
||||
int vblank_mode = dri_vblank_mode(driScreen, config);
|
||||
|
||||
switch (vblank_mode) {
|
||||
case DRI_CONF_VBLANK_NEVER:
|
||||
case DRI_CONF_VBLANK_DEF_INTERVAL_0:
|
||||
return 0;
|
||||
case DRI_CONF_VBLANK_DEF_INTERVAL_1:
|
||||
case DRI_CONF_VBLANK_ALWAYS_SYNC:
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
bool dri_valid_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config, int interval)
|
||||
{
|
||||
int vblank_mode = dri_vblank_mode(driScreen, config);
|
||||
|
||||
switch (vblank_mode) {
|
||||
case DRI_CONF_VBLANK_NEVER:
|
||||
if (interval != 0)
|
||||
return false;
|
||||
break;
|
||||
case DRI_CONF_VBLANK_ALWAYS_SYNC:
|
||||
if (interval <= 0)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -193,4 +193,9 @@ PUBLIC int
|
|||
dri2GalliumConfigQueryf(__DRIscreen *sPriv, const char *var, float *val);
|
||||
PUBLIC int
|
||||
dri2GalliumConfigQuerys(__DRIscreen *sPriv, const char *var, char **val);
|
||||
|
||||
PUBLIC int dri_get_initial_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config);
|
||||
PUBLIC bool dri_valid_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config, int interval);
|
||||
#endif /* _DRI_UTIL_H_ */
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
dri_flush;
|
||||
dri_invalidate_drawable;
|
||||
dri2GalliumConfigQuery*;
|
||||
dri_get_initial_swap_interval;
|
||||
dri_valid_swap_interval;
|
||||
dri_loader_get_extensions;
|
||||
@nouveau_drm_screen_create@
|
||||
@radeon_drm_winsys_create@
|
||||
|
|
|
|||
|
|
@ -63,53 +63,6 @@ __DRIimage *loader_dri_create_image(__DRIscreen *screen,
|
|||
loaderPrivate);
|
||||
}
|
||||
|
||||
static int dri_vblank_mode(__DRIscreen *driScreen, const __DRI2configQueryExtension *config)
|
||||
{
|
||||
GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
|
||||
|
||||
if (config)
|
||||
config->configQueryi(driScreen, "vblank_mode", &vblank_mode);
|
||||
|
||||
return vblank_mode;
|
||||
}
|
||||
|
||||
int dri_get_initial_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config)
|
||||
{
|
||||
int vblank_mode = dri_vblank_mode(driScreen, config);
|
||||
|
||||
switch (vblank_mode) {
|
||||
case DRI_CONF_VBLANK_NEVER:
|
||||
case DRI_CONF_VBLANK_DEF_INTERVAL_0:
|
||||
return 0;
|
||||
case DRI_CONF_VBLANK_DEF_INTERVAL_1:
|
||||
case DRI_CONF_VBLANK_ALWAYS_SYNC:
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
bool dri_valid_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config, int interval)
|
||||
{
|
||||
int vblank_mode = dri_vblank_mode(driScreen, config);
|
||||
|
||||
switch (vblank_mode) {
|
||||
case DRI_CONF_VBLANK_NEVER:
|
||||
if (interval != 0)
|
||||
return false;
|
||||
break;
|
||||
case DRI_CONF_VBLANK_ALWAYS_SYNC:
|
||||
if (interval <= 0)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* the DRIimage createImage function takes __DRI_IMAGE_FORMAT codes, while
|
||||
* the createImageFromDmaBufs call takes DRM_FORMAT codes. To avoid
|
||||
* complete confusion, just deal in __DRI_IMAGE_FORMAT codes for now and
|
||||
|
|
|
|||
|
|
@ -112,12 +112,6 @@ __DRIimage *loader_dri_create_image(__DRIscreen *screen,
|
|||
unsigned int modifiers_count,
|
||||
void *loaderPrivate);
|
||||
|
||||
int dri_get_initial_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config);
|
||||
|
||||
bool dri_valid_swap_interval(__DRIscreen *driScreen,
|
||||
const __DRI2configQueryExtension *config, int interval);
|
||||
|
||||
int
|
||||
loader_image_format_to_fourcc(int format);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue