diff options
-rw-r--r-- | include/GL/internal/dri_interface.h | 12 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/dri_screen.c | 3 | ||||
-rw-r--r-- | src/glx/dri_common.c | 13 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/utils.c | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915/intel_screen.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/nouveau/nouveau_screen.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_screen.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/swrast/swrast.c | 2 |
9 files changed, 35 insertions, 11 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index 5e8fce79f91..2cbd738439e 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -724,6 +724,18 @@ struct __DRIuseInvalidateExtensionRec { #define __DRI_ATTRIB_TEXTURE_2D_BIT 0x02 #define __DRI_ATTRIB_TEXTURE_RECTANGLE_BIT 0x04 +/* __DRI_ATTRIB_SWAP_METHOD */ +/* Note that with the exception of __DRI_ATTRIB_SWAP_NONE, we need to define + * the same tokens as GLX. This is because old and current X servers will + * transmit the driconf value grabbed from the AIGLX driver untranslated as + * the GLX fbconfig value. __DRI_ATTRIB_SWAP_NONE is only used by dri drivers + * to signal to the dri core that the driconfig is single-buffer. + */ +#define __DRI_ATTRIB_SWAP_NONE 0x0000 +#define __DRI_ATTRIB_SWAP_EXCHANGE 0x8061 +#define __DRI_ATTRIB_SWAP_COPY 0x8062 +#define __DRI_ATTRIB_SWAP_UNDEFINED 0x8063 + /** * This extension defines the core DRI functionality. * diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c index 406e97dc242..1d9f441223e 100644 --- a/src/gallium/state_trackers/dri/dri_screen.c +++ b/src/gallium/state_trackers/dri/dri_screen.c @@ -156,7 +156,8 @@ dri_fill_in_modes(struct dri_screen *screen) boolean mixed_color_depth; static const GLenum back_buffer_modes[] = { - GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML + __DRI_ATTRIB_SWAP_NONE, __DRI_ATTRIB_SWAP_UNDEFINED, + __DRI_ATTRIB_SWAP_COPY }; if (driQueryOptionb(&screen->dev->option_cache, "always_have_depth_buffer")) { diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 0f8f7134b4a..e2bbd48d3a5 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -317,6 +317,19 @@ driConfigEqual(const __DRIcoreExtension *core, return GL_FALSE; break; + case __DRI_ATTRIB_SWAP_METHOD: + if (value == __DRI_ATTRIB_SWAP_EXCHANGE) + glxValue = GLX_SWAP_EXCHANGE_OML; + else if (value == __DRI_ATTRIB_SWAP_COPY) + glxValue = GLX_SWAP_COPY_OML; + else + glxValue = GLX_SWAP_UNDEFINED_OML; + + if (!scalarEqual(config, attrib, glxValue)) + return GL_FALSE; + + break; + default: if (!scalarEqual(config, attrib, value)) return GL_FALSE; diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 7ae4cb8cd20..e944754a424 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -284,9 +284,9 @@ driCreateConfigs(mesa_format format, modes->transparentIndex = GLX_DONT_CARE; modes->rgbMode = GL_TRUE; - if ( db_modes[i] == GLX_NONE ) { + if (db_modes[i] == __DRI_ATTRIB_SWAP_NONE) { modes->doubleBufferMode = GL_FALSE; - modes->swapMethod = GLX_SWAP_UNDEFINED_OML; + modes->swapMethod = __DRI_ATTRIB_SWAP_UNDEFINED; } else { modes->doubleBufferMode = GL_TRUE; diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c index 367a7347fb9..6e32ac22cb7 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.c +++ b/src/mesa/drivers/dri/i915/intel_screen.c @@ -1060,7 +1060,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) /* GLX_SWAP_COPY_OML is not supported due to page flipping. */ static const GLenum back_buffer_modes[] = { - GLX_SWAP_UNDEFINED_OML, GLX_NONE, + __DRI_ATTRIB_SWAP_UNDEFINED, __DRI_ATTRIB_SWAP_NONE }; static const uint8_t singlesample_samples[1] = {0}; diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index ec07cf0acc7..452f0d186cd 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -1774,7 +1774,7 @@ intel_screen_make_configs(__DRIscreen *dri_screen) /* GLX_SWAP_COPY_OML is not supported due to page flipping. */ static const GLenum back_buffer_modes[] = { - GLX_SWAP_UNDEFINED_OML, GLX_NONE, + __DRI_ATTRIB_SWAP_UNDEFINED, __DRI_ATTRIB_SWAP_NONE }; static const uint8_t singlesample_samples[1] = {0}; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c index 65caec27eb3..95b3469daae 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_screen.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.c @@ -65,7 +65,7 @@ nouveau_get_configs(uint32_t chipset) }; const GLenum back_buffer_modes[] = { - GLX_NONE, GLX_SWAP_UNDEFINED_OML + __DRI_ATTRIB_SWAP_NONE, __DRI_ATTRIB_SWAP_UNDEFINED }; for (i = 0; i < ARRAY_SIZE(formats); i++) { diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index a2061e51be5..750a6549228 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -770,11 +770,9 @@ __DRIconfig **radeonInitScreen2(__DRIscreen *psp) MESA_FORMAT_B8G8R8X8_UNORM, MESA_FORMAT_B8G8R8A8_UNORM }; - /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't - * support pageflipping at all. - */ + static const GLenum back_buffer_modes[] = { - GLX_NONE, GLX_SWAP_UNDEFINED_OML, /*, GLX_SWAP_COPY_OML*/ + __DRI_ATTRIB_SWAP_NONE, __DRI_ATTRIB_SWAP_UNDEFINED }; uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1]; int color; diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 7de90d31f13..45d8279d364 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -227,7 +227,7 @@ swrastFillInModes(__DRIscreen *psp, * support pageflipping at all. */ static const GLenum back_buffer_modes[] = { - GLX_NONE, GLX_SWAP_UNDEFINED_OML + __DRI_ATTRIB_SWAP_NONE, __DRI_ATTRIB_SWAP_UNDEFINED }; uint8_t depth_bits_array[4]; |