mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
radeon/r200/r300: add support for new tfp interface
also fixup old interface, gets rid of white boxes in compiz
This commit is contained in:
parent
2d26d4ac66
commit
4a2cb696cc
7 changed files with 57 additions and 11 deletions
|
|
@ -36,6 +36,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define __R200_TEX_H__
|
||||
|
||||
extern void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv);
|
||||
extern void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format,
|
||||
__DRIdrawable *dPriv);
|
||||
extern void r200SetTexOffset(__DRIcontext *pDRICtx, GLint texname,
|
||||
unsigned long long offset, GLint depth,
|
||||
GLuint pitch);
|
||||
|
|
|
|||
|
|
@ -765,7 +765,8 @@ void r200SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
|||
}
|
||||
}
|
||||
|
||||
void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format,
|
||||
__DRIdrawable *dPriv)
|
||||
{
|
||||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_object *texObj;
|
||||
|
|
@ -777,8 +778,11 @@ void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
|||
struct radeon_framebuffer *rfb;
|
||||
radeonTexObjPtr t;
|
||||
uint32_t pitch_val;
|
||||
uint32_t internalFormat, type, format;
|
||||
|
||||
target = GL_TEXTURE_RECTANGLE_ARB;
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
internalFormat = (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT ? 3 : 4);
|
||||
|
||||
radeon = pDRICtx->driverPrivate;
|
||||
rmesa = pDRICtx->driverPrivate;
|
||||
|
|
@ -832,7 +836,9 @@ void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
|||
fprintf(stderr,"settexbuf %d %dx%d@%d\n", rb->pitch, rb->width, rb->height, rb->cpp);
|
||||
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
||||
rb->width, rb->height, 1, 0, rb->cpp);
|
||||
texImage->TexFormat = &_mesa_texformat_rgba8888_rev;
|
||||
texImage->TexFormat = radeonChooseTextureFormat(radeon->glCtx,
|
||||
internalFormat,
|
||||
type, format);
|
||||
rImage->bo = rb->bo;
|
||||
radeon_bo_ref(rImage->bo);
|
||||
t->bo = rb->bo;
|
||||
|
|
@ -868,6 +874,13 @@ void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
void r200SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
{
|
||||
r200SetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
}
|
||||
|
||||
|
||||
#define REF_COLOR 1
|
||||
#define REF_ALPHA 2
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ extern void r300SetDepthTexMode(struct gl_texture_object *tObj);
|
|||
extern void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target,
|
||||
__DRIdrawable *dPriv);
|
||||
|
||||
extern void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
|
||||
GLint format, __DRIdrawable *dPriv);
|
||||
|
||||
extern void r300SetTexOffset(__DRIcontext *pDRICtx, GLint texname,
|
||||
unsigned long long offset, GLint depth,
|
||||
GLuint pitch);
|
||||
|
|
|
|||
|
|
@ -384,7 +384,7 @@ void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
|||
t->pp_txpitch |= pitch_val;
|
||||
}
|
||||
|
||||
void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format, __DRIdrawable *dPriv)
|
||||
{
|
||||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_object *texObj;
|
||||
|
|
@ -396,8 +396,11 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
|||
struct radeon_framebuffer *rfb;
|
||||
radeonTexObjPtr t;
|
||||
uint32_t pitch_val;
|
||||
uint32_t internalFormat, type, format;
|
||||
|
||||
target = GL_TEXTURE_RECTANGLE_ARB;
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
internalFormat = (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT ? 3 : 4);
|
||||
|
||||
radeon = pDRICtx->driverPrivate;
|
||||
rmesa = pDRICtx->driverPrivate;
|
||||
|
|
@ -448,10 +451,12 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
|||
radeon_miptree_unreference(rImage->mt);
|
||||
rImage->mt = NULL;
|
||||
}
|
||||
fprintf(stderr,"settexbuf %dx%d@%d\n", rb->width, rb->height, rb->cpp);
|
||||
fprintf(stderr,"settexbuf %dx%d@%d targ %x format %x\n", rb->width, rb->height, rb->cpp, target, format);
|
||||
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
||||
rb->width, rb->height, 1, 0, rb->cpp);
|
||||
texImage->TexFormat = &_mesa_texformat_rgba8888_rev;
|
||||
texImage->TexFormat = radeonChooseTextureFormat(radeon->glCtx,
|
||||
internalFormat,
|
||||
type, format);
|
||||
rImage->bo = rb->bo;
|
||||
radeon_bo_ref(rImage->bo);
|
||||
t->bo = rb->bo;
|
||||
|
|
@ -495,3 +500,8 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
|||
_mesa_unlock_texture(radeon->glCtx, texObj);
|
||||
return;
|
||||
}
|
||||
|
||||
void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
{
|
||||
r300SetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -339,6 +339,7 @@ static const __DRItexOffsetExtension radeonTexOffsetExtension = {
|
|||
static const __DRItexBufferExtension radeonTexBufferExtension = {
|
||||
{ __DRI_TEX_BUFFER, __DRI_TEX_BUFFER_VERSION },
|
||||
radeonSetTexBuffer,
|
||||
radeonSetTexBuffer2,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -358,6 +359,7 @@ static const __DRItexOffsetExtension r200texOffsetExtension = {
|
|||
static const __DRItexBufferExtension r200TexBufferExtension = {
|
||||
{ __DRI_TEX_BUFFER, __DRI_TEX_BUFFER_VERSION },
|
||||
r200SetTexBuffer,
|
||||
r200SetTexBuffer2,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -370,6 +372,7 @@ static const __DRItexOffsetExtension r300texOffsetExtension = {
|
|||
static const __DRItexBufferExtension r300TexBufferExtension = {
|
||||
{ __DRI_TEX_BUFFER, __DRI_TEX_BUFFER_VERSION },
|
||||
r300SetTexBuffer,
|
||||
r300SetTexBuffer2,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,9 @@ extern void radeonSetTexOffset(__DRIcontext *pDRICtx, GLint texname,
|
|||
GLuint pitch);
|
||||
|
||||
extern void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv);
|
||||
externvoid radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format,
|
||||
__DRIdrawable *dPriv);
|
||||
|
||||
extern void radeonUpdateTextureState( GLcontext *ctx );
|
||||
|
||||
extern int radeonUploadTexImages( r100ContextPtr rmesa, radeonTexObjPtr t,
|
||||
|
|
|
|||
|
|
@ -637,7 +637,8 @@ void radeonSetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
|||
}
|
||||
}
|
||||
|
||||
void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format,
|
||||
__DRIdrawable *dPriv)
|
||||
{
|
||||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_object *texObj;
|
||||
|
|
@ -649,8 +650,11 @@ void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPri
|
|||
struct radeon_framebuffer *rfb;
|
||||
radeonTexObjPtr t;
|
||||
uint32_t pitch_val;
|
||||
uint32_t internalFormat, type, format;
|
||||
|
||||
target = GL_TEXTURE_RECTANGLE_ARB;
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
internalFormat = (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT ? 3 : 4);
|
||||
|
||||
radeon = pDRICtx->driverPrivate;
|
||||
rmesa = pDRICtx->driverPrivate;
|
||||
|
|
@ -701,10 +705,11 @@ void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPri
|
|||
radeon_miptree_unreference(rImage->mt);
|
||||
rImage->mt = NULL;
|
||||
}
|
||||
fprintf(stderr,"settexbuf %d %dx%d@%d\n", rb->pitch, rb->width, rb->height, rb->cpp);
|
||||
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
||||
rb->width, rb->height, 1, 0, rb->cpp);
|
||||
texImage->TexFormat = &_mesa_texformat_rgba8888_rev;
|
||||
texImage->TexFormat = radeonChooseTextureFormat(radeon->glCtx,
|
||||
internalFormat,
|
||||
type, format);
|
||||
rImage->bo = rb->bo;
|
||||
radeon_bo_ref(rImage->bo);
|
||||
t->bo = rb->bo;
|
||||
|
|
@ -740,6 +745,13 @@ void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPri
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
{
|
||||
radeonSetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
|
||||
}
|
||||
|
||||
|
||||
#define TEXOBJ_TXFILTER_MASK (RADEON_MAX_MIP_LEVEL_MASK | \
|
||||
RADEON_MIN_FILTER_MASK | \
|
||||
RADEON_MAG_FILTER_MASK | \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue