dri_interface: Introduce DRI tokens for the texBuffer texture formats
This used to take GLX tokens, but the DRI interface can't depend on GLX defines. We fix this by introducing DRI tokens that have the same value as the GLX texture format tokens.
This commit is contained in:
parent
8c593d3ea9
commit
debf00e5fc
|
@ -230,6 +230,13 @@ struct __DRItexOffsetExtensionRec {
|
|||
};
|
||||
|
||||
|
||||
/* Valid values for format in the setTexBuffer2 function below. These
|
||||
* values match the GLX tokens for compatibility reasons, but we
|
||||
* define them here since the DRI interface can't depend on GLX. */
|
||||
#define __DRI_TEXTURE_FORMAT_NONE 0x20D8
|
||||
#define __DRI_TEXTURE_FORMAT_RGB 0x20D9
|
||||
#define __DRI_TEXTURE_FORMAT_RGBA 0x20DA
|
||||
|
||||
#define __DRI_TEX_BUFFER "DRI_TexBuffer"
|
||||
#define __DRI_TEX_BUFFER_VERSION 2
|
||||
struct __DRItexBufferExtensionRec {
|
||||
|
|
|
@ -178,8 +178,4 @@ typedef struct __GLcontextModesRec {
|
|||
#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
|
||||
#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
|
||||
|
||||
#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
|
||||
#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
|
||||
#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
|
||||
|
||||
#endif /* __gl_core_h_ */
|
||||
|
|
|
@ -268,7 +268,7 @@ void dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,
|
|||
void dri2_set_tex_buffer(__DRIcontext *pDRICtx, GLint target,
|
||||
__DRIdrawable *dPriv)
|
||||
{
|
||||
dri2_set_tex_buffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
dri2_set_tex_buffer2(pDRICtx, target, __DRI_TEXTURE_FORMAT_RGBA, dPriv);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -728,7 +728,7 @@ intelSetTexOffset(__DRIcontext *pDRICtx, GLint texname,
|
|||
|
||||
void
|
||||
intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
|
||||
GLint glx_texture_format,
|
||||
GLint texture_format,
|
||||
__DRIdrawable *dPriv)
|
||||
{
|
||||
struct gl_framebuffer *fb = dPriv->driverPrivate;
|
||||
|
@ -758,7 +758,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
|
|||
if (rb->region == NULL)
|
||||
return;
|
||||
|
||||
if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
|
||||
if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
|
||||
internalFormat = GL_RGB;
|
||||
else
|
||||
internalFormat = GL_RGBA;
|
||||
|
@ -788,7 +788,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
|
|||
|
||||
intelImage->face = target_to_face(target);
|
||||
intelImage->level = level;
|
||||
if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
|
||||
if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
|
||||
texImage->TexFormat = MESA_FORMAT_XRGB8888;
|
||||
else
|
||||
texImage->TexFormat = MESA_FORMAT_ARGB8888;
|
||||
|
@ -808,7 +808,7 @@ intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
|||
/* The old interface didn't have the format argument, so copy our
|
||||
* implementation's behavior at the time.
|
||||
*/
|
||||
intelSetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
intelSetTexBuffer2(pDRICtx, target, __DRI_TEXTURE_FORMAT_RGBA, dPriv);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -764,7 +764,7 @@ void r200SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
|||
}
|
||||
}
|
||||
|
||||
void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format,
|
||||
void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format,
|
||||
__DRIdrawable *dPriv)
|
||||
{
|
||||
struct gl_texture_unit *texUnit;
|
||||
|
@ -781,7 +781,7 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
internalFormat = (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT ? 3 : 4);
|
||||
internalFormat = (texture_format == __DRI_TEXTURE_FORMAT_RGB ? 3 : 4);
|
||||
|
||||
radeon = pDRICtx->driverPrivate;
|
||||
rmesa = pDRICtx->driverPrivate;
|
||||
|
@ -832,7 +832,7 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
pitch_val = rb->pitch;
|
||||
switch (rb->cpp) {
|
||||
case 4:
|
||||
if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
|
||||
if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
|
||||
t->pp_txformat = tx_table_le[MESA_FORMAT_RGB888].format;
|
||||
else
|
||||
t->pp_txformat = tx_table_le[MESA_FORMAT_ARGB8888].format;
|
||||
|
@ -862,7 +862,7 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
|
||||
void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
{
|
||||
r200SetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
r200SetTexBuffer2(pDRICtx, target, __DRI_TEXTURE_FORMAT_RGBA, dPriv);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -415,7 +415,7 @@ void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
|||
t->pp_txpitch |= pitch_val;
|
||||
}
|
||||
|
||||
void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format, __DRIdrawable *dPriv)
|
||||
void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format, __DRIdrawable *dPriv)
|
||||
{
|
||||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_object *texObj;
|
||||
|
@ -431,7 +431,7 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
internalFormat = (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT ? 3 : 4);
|
||||
internalFormat = (texture_format == __DRI_TEXTURE_FORMAT_RGB ? 3 : 4);
|
||||
|
||||
radeon = pDRICtx->driverPrivate;
|
||||
rmesa = pDRICtx->driverPrivate;
|
||||
|
@ -481,7 +481,7 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
pitch_val = rb->pitch;
|
||||
switch (rb->cpp) {
|
||||
case 4:
|
||||
if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
|
||||
if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
|
||||
t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, W8Z8Y8X8);
|
||||
else
|
||||
t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8);
|
||||
|
@ -520,5 +520,5 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
|
||||
void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
{
|
||||
r300SetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
r300SetTexBuffer2(pDRICtx, target, __DRI_TEXTURE_FORMAT_RGBA, dPriv);
|
||||
}
|
||||
|
|
|
@ -988,7 +988,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
internalFormat = (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT ? 3 : 4);
|
||||
internalFormat = (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB ? 3 : 4);
|
||||
|
||||
radeon = pDRICtx->driverPrivate;
|
||||
rmesa = pDRICtx->driverPrivate;
|
||||
|
@ -1037,7 +1037,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
pitch_val = rb->pitch;
|
||||
switch (rb->cpp) {
|
||||
case 4:
|
||||
if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT) {
|
||||
if (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB) {
|
||||
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
|
||||
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
|
||||
|
||||
|
@ -1116,5 +1116,5 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
|
|||
|
||||
void r600SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
{
|
||||
r600SetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
r600SetTexBuffer2(pDRICtx, target, __DRM_TEXTURE_FORMAT_RGBA, dPriv);
|
||||
}
|
||||
|
|
|
@ -639,7 +639,7 @@ void radeonSetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
|||
}
|
||||
}
|
||||
|
||||
void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format,
|
||||
void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format,
|
||||
__DRIdrawable *dPriv)
|
||||
{
|
||||
struct gl_texture_unit *texUnit;
|
||||
|
@ -656,7 +656,7 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_
|
|||
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
internalFormat = (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT ? 3 : 4);
|
||||
internalFormat = (texture_format == __DRI_TEXTURE_FORMAT_RGB ? 3 : 4);
|
||||
|
||||
radeon = pDRICtx->driverPrivate;
|
||||
rmesa = pDRICtx->driverPrivate;
|
||||
|
@ -705,7 +705,7 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_
|
|||
t->override_offset = 0;
|
||||
switch (rb->cpp) {
|
||||
case 4:
|
||||
if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
|
||||
if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
|
||||
t->pp_txformat = tx_table[MESA_FORMAT_RGB888].format;
|
||||
else
|
||||
t->pp_txformat = tx_table[MESA_FORMAT_ARGB8888].format;
|
||||
|
@ -740,7 +740,7 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_
|
|||
|
||||
void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
{
|
||||
radeonSetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
radeonSetTexBuffer2(pDRICtx, target, __DRI_TEXTURE_FORMAT_RGBA, dPriv);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue