mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
add more Mesa patches
This commit is contained in:
parent
dbd5269182
commit
fb0b1aa15e
@ -1,13 +1,5 @@
|
||||
commit 532d2051245a1d8afe7ca236f1d966d555bb121a
|
||||
Author: Dave Airlie <airlied@linux.ie>
|
||||
Date: Fri Sep 12 17:21:25 2008 +1000
|
||||
|
||||
Revert "intel: sync to vblank by default"
|
||||
|
||||
This reverts commit e9bf3e4cc9a7e4bcd4c45bd707541d26ecdf0409.
|
||||
|
||||
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
|
||||
index c193830..f02192d 100644
|
||||
index 5233e58..5dded4b 100644
|
||||
--- a/src/mesa/drivers/dri/intel/intel_screen.c
|
||||
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
|
||||
@@ -55,7 +55,7 @@ PUBLIC const char __driConfigOptions[] =
|
||||
@ -19,3 +11,4 @@ index c193830..f02192d 100644
|
||||
/* Options correspond to DRI_CONF_BO_REUSE_DISABLED,
|
||||
* DRI_CONF_BO_REUSE_ALL
|
||||
*/
|
||||
|
@ -0,0 +1,33 @@
|
||||
commit 954dfba12986f578f2d8461818f9e9ac1f8f2b41
|
||||
Author: Keith Packard <keithp@keithp.com>
|
||||
Date: Fri Jan 30 21:51:32 2009 -0800
|
||||
|
||||
i965: bump texture limit to 4kx4k
|
||||
|
||||
Rendering and textures are limited to 8kx8k, but mesa limits things to
|
||||
4kx4k, and magic guard band stuff may break on 8kx8k drawing. This is safe
|
||||
though, and makes compiz work on bigger screens.
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
|
||||
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
|
||||
index d7a2bd9..d66781f 100644
|
||||
--- a/src/mesa/drivers/dri/i965/brw_context.c
|
||||
+++ b/src/mesa/drivers/dri/i965/brw_context.c
|
||||
@@ -135,13 +135,12 @@ GLboolean brwCreateContext( const __GLcontextModes *mesaVis,
|
||||
ctx->Const.MaxTextureImageUnits);
|
||||
ctx->Const.MaxVertexTextureImageUnits = 0; /* no vertex shader textures */
|
||||
|
||||
- /* Advertise the full hardware capabilities. The new memory
|
||||
- * manager should cope much better with overload situations:
|
||||
+ /* Mesa limits textures to 4kx4k; it would be nice to fix that someday
|
||||
*/
|
||||
- ctx->Const.MaxTextureLevels = 12;
|
||||
+ ctx->Const.MaxTextureLevels = 13;
|
||||
ctx->Const.Max3DTextureLevels = 9;
|
||||
ctx->Const.MaxCubeTextureLevels = 12;
|
||||
- ctx->Const.MaxTextureRectSize = (1<<11);
|
||||
+ ctx->Const.MaxTextureRectSize = (1<<12);
|
||||
|
||||
/* if conformance mode is set, swrast can handle any size AA point */
|
||||
ctx->Const.MaxPointSizeAA = 255.0;
|
337
packages/graphics/Mesa/patches/104_fix_dri2_ext_tfp.diff
Normal file
337
packages/graphics/Mesa/patches/104_fix_dri2_ext_tfp.diff
Normal file
@ -0,0 +1,337 @@
|
||||
Index: mesa/include/GL/internal/dri_interface.h
|
||||
===================================================================
|
||||
--- mesa.orig/include/GL/internal/dri_interface.h 2009-01-25 17:28:10.000000000 +0200
|
||||
+++ mesa/include/GL/internal/dri_interface.h 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -230,7 +230,7 @@
|
||||
|
||||
|
||||
#define __DRI_TEX_BUFFER "DRI_TexBuffer"
|
||||
-#define __DRI_TEX_BUFFER_VERSION 1
|
||||
+#define __DRI_TEX_BUFFER_VERSION 2
|
||||
struct __DRItexBufferExtensionRec {
|
||||
__DRIextension base;
|
||||
|
||||
@@ -238,11 +238,23 @@
|
||||
* Method to override base texture image with the contents of a
|
||||
* __DRIdrawable.
|
||||
*
|
||||
- * For GLX_EXT_texture_from_pixmap with AIGLX.
|
||||
+ * For GLX_EXT_texture_from_pixmap with AIGLX. Deprecated in favor of
|
||||
+ * setTexBuffer2 in version 2 of this interface
|
||||
*/
|
||||
void (*setTexBuffer)(__DRIcontext *pDRICtx,
|
||||
GLint target,
|
||||
__DRIdrawable *pDraw);
|
||||
+
|
||||
+ /**
|
||||
+ * Method to override base texture image with the contents of a
|
||||
+ * __DRIdrawable, including the required texture format attribute.
|
||||
+ *
|
||||
+ * For GLX_EXT_texture_from_pixmap with AIGLX.
|
||||
+ */
|
||||
+ void (*setTexBuffer2)(__DRIcontext *pDRICtx,
|
||||
+ GLint target,
|
||||
+ GLint format,
|
||||
+ __DRIdrawable *pDraw);
|
||||
};
|
||||
|
||||
|
||||
Index: mesa/include/GL/internal/glcore.h
|
||||
===================================================================
|
||||
--- mesa.orig/include/GL/internal/glcore.h 2009-01-16 21:37:10.000000000 +0200
|
||||
+++ mesa/include/GL/internal/glcore.h 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -176,4 +176,8 @@
|
||||
#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_ */
|
||||
Index: mesa/src/glx/x11/glx_pbuffer.c
|
||||
===================================================================
|
||||
--- mesa.orig/src/glx/x11/glx_pbuffer.c 2009-01-16 23:12:40.000000000 +0200
|
||||
+++ mesa/src/glx/x11/glx_pbuffer.c 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -189,6 +189,21 @@
|
||||
|
||||
return target;
|
||||
}
|
||||
+
|
||||
+
|
||||
+static GLenum
|
||||
+determineTextureFormat(const int *attribs, int numAttribs)
|
||||
+{
|
||||
+ GLenum target = 0;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < numAttribs; i++) {
|
||||
+ if (attribs[2 * i] == GLX_TEXTURE_FORMAT_EXT)
|
||||
+ return attribs[2 * i + 1];
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -294,6 +309,9 @@
|
||||
if (pdraw != NULL && !pdraw->textureTarget)
|
||||
pdraw->textureTarget =
|
||||
determineTextureTarget((const int *) data, num_attributes);
|
||||
+ if (pdraw != NULL && !pdraw->textureFormat)
|
||||
+ pdraw->textureFormat =
|
||||
+ determineTextureFormat((const int *) data, num_attributes);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -374,6 +392,7 @@
|
||||
}
|
||||
|
||||
pdraw->textureTarget = determineTextureTarget(attrib_list, i);
|
||||
+ pdraw->textureFormat = determineTextureFormat(attrib_list, i);
|
||||
} while (0);
|
||||
#endif
|
||||
|
||||
Index: mesa/src/glx/x11/glxclient.h
|
||||
===================================================================
|
||||
--- mesa.orig/src/glx/x11/glxclient.h 2009-03-30 10:47:17.000000000 +0300
|
||||
+++ mesa/src/glx/x11/glxclient.h 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -161,6 +161,7 @@
|
||||
__GLXscreenConfigs *psc;
|
||||
GLenum textureTarget;
|
||||
__DRIdrawable *driDrawable;
|
||||
+ GLenum textureFormat; /* EXT_texture_from_pixmap support */
|
||||
};
|
||||
|
||||
/*
|
||||
Index: mesa/src/glx/x11/glxcmds.c
|
||||
===================================================================
|
||||
--- mesa.orig/src/glx/x11/glxcmds.c 2009-03-30 10:34:15.000000000 +0300
|
||||
+++ mesa/src/glx/x11/glxcmds.c 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -2631,11 +2631,19 @@
|
||||
if (gc->driContext) {
|
||||
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
|
||||
|
||||
- if (pdraw != NULL)
|
||||
- (*pdraw->psc->texBuffer->setTexBuffer)(gc->__driContext,
|
||||
- pdraw->textureTarget,
|
||||
- pdraw->driDrawable);
|
||||
-
|
||||
+ if (pdraw != NULL) {
|
||||
+ if (pdraw->psc->texBuffer->base.version >= 2 &&
|
||||
+ pdraw->psc->texBuffer->setTexBuffer2 != NULL) {
|
||||
+ (*pdraw->psc->texBuffer->setTexBuffer2)(gc->__driContext,
|
||||
+ pdraw->textureTarget,
|
||||
+ pdraw->textureFormat,
|
||||
+ pdraw->driDrawable);
|
||||
+ } else {
|
||||
+ (*pdraw->psc->texBuffer->setTexBuffer)(gc->__driContext,
|
||||
+ pdraw->textureTarget,
|
||||
+ pdraw->driDrawable);
|
||||
+ }
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
Index: mesa/src/mesa/drivers/dri/i915/i830_texstate.c
|
||||
===================================================================
|
||||
--- mesa.orig/src/mesa/drivers/dri/i915/i830_texstate.c 2009-01-16 21:37:10.000000000 +0200
|
||||
+++ mesa/src/mesa/drivers/dri/i915/i830_texstate.c 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
|
||||
static GLuint
|
||||
-translate_texture_format(GLuint mesa_format)
|
||||
+translate_texture_format(GLuint mesa_format, GLuint internal_format)
|
||||
{
|
||||
switch (mesa_format) {
|
||||
case MESA_FORMAT_L8:
|
||||
@@ -56,7 +56,10 @@
|
||||
case MESA_FORMAT_ARGB4444:
|
||||
return MAPSURF_16BIT | MT_16BIT_ARGB4444;
|
||||
case MESA_FORMAT_ARGB8888:
|
||||
- return MAPSURF_32BIT | MT_32BIT_ARGB8888;
|
||||
+ if (internal_format == GL_RGB)
|
||||
+ return MAPSURF_32BIT | MT_32BIT_XRGB8888;
|
||||
+ else
|
||||
+ return MAPSURF_32BIT | MT_32BIT_ARGB8888;
|
||||
case MESA_FORMAT_YCBCR_REV:
|
||||
return (MAPSURF_422 | MT_422_YCRCB_NORMAL);
|
||||
case MESA_FORMAT_YCBCR:
|
||||
@@ -162,7 +165,8 @@
|
||||
0, intelObj->
|
||||
firstLevel);
|
||||
|
||||
- format = translate_texture_format(firstImage->TexFormat->MesaFormat);
|
||||
+ format = translate_texture_format(firstImage->TexFormat->MesaFormat,
|
||||
+ firstImage->InternalFormat);
|
||||
pitch = intelObj->mt->pitch * intelObj->mt->cpp;
|
||||
}
|
||||
|
||||
Index: mesa/src/mesa/drivers/dri/i915/i915_texstate.c
|
||||
===================================================================
|
||||
--- mesa.orig/src/mesa/drivers/dri/i915/i915_texstate.c 2009-01-16 21:40:22.000000000 +0200
|
||||
+++ mesa/src/mesa/drivers/dri/i915/i915_texstate.c 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -37,7 +37,8 @@
|
||||
|
||||
|
||||
static GLuint
|
||||
-translate_texture_format(GLuint mesa_format, GLenum DepthMode)
|
||||
+translate_texture_format(GLuint mesa_format, GLuint internal_format,
|
||||
+ GLenum DepthMode)
|
||||
{
|
||||
switch (mesa_format) {
|
||||
case MESA_FORMAT_L8:
|
||||
@@ -55,7 +56,10 @@
|
||||
case MESA_FORMAT_ARGB4444:
|
||||
return MAPSURF_16BIT | MT_16BIT_ARGB4444;
|
||||
case MESA_FORMAT_ARGB8888:
|
||||
- return MAPSURF_32BIT | MT_32BIT_ARGB8888;
|
||||
+ if (internal_format == GL_RGB)
|
||||
+ return MAPSURF_32BIT | MT_32BIT_XRGB8888;
|
||||
+ else
|
||||
+ return MAPSURF_32BIT | MT_32BIT_ARGB8888;
|
||||
case MESA_FORMAT_YCBCR_REV:
|
||||
return (MAPSURF_422 | MT_422_YCRCB_NORMAL);
|
||||
case MESA_FORMAT_YCBCR:
|
||||
@@ -173,7 +177,8 @@
|
||||
firstLevel);
|
||||
|
||||
format = translate_texture_format(firstImage->TexFormat->MesaFormat,
|
||||
- tObj->DepthMode);
|
||||
+ firstImage->InternalFormat,
|
||||
+ tObj->DepthMode);
|
||||
pitch = intelObj->mt->pitch * intelObj->mt->cpp;
|
||||
}
|
||||
|
||||
Index: mesa/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
|
||||
===================================================================
|
||||
--- mesa.orig/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 2009-03-30 10:34:15.000000000 +0300
|
||||
+++ mesa/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -69,7 +69,8 @@
|
||||
}
|
||||
|
||||
|
||||
-static GLuint translate_tex_format( GLuint mesa_format, GLenum depth_mode )
|
||||
+static GLuint translate_tex_format( GLuint mesa_format, GLenum internal_format,
|
||||
+ GLenum depth_mode )
|
||||
{
|
||||
switch( mesa_format ) {
|
||||
case MESA_FORMAT_L8:
|
||||
@@ -89,10 +90,16 @@
|
||||
return BRW_SURFACEFORMAT_R8G8B8_UNORM;
|
||||
|
||||
case MESA_FORMAT_ARGB8888:
|
||||
- return BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
|
||||
+ if (internal_format == GL_RGB)
|
||||
+ return BRW_SURFACEFORMAT_B8G8R8X8_UNORM;
|
||||
+ else
|
||||
+ return BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
|
||||
|
||||
case MESA_FORMAT_RGBA8888_REV:
|
||||
- return BRW_SURFACEFORMAT_R8G8B8A8_UNORM;
|
||||
+ if (internal_format == GL_RGB)
|
||||
+ return BRW_SURFACEFORMAT_R8G8B8X8_UNORM;
|
||||
+ else
|
||||
+ return BRW_SURFACEFORMAT_R8G8B8A8_UNORM;
|
||||
|
||||
case MESA_FORMAT_RGB565:
|
||||
return BRW_SURFACEFORMAT_B5G6R5_UNORM;
|
||||
@@ -150,7 +157,7 @@
|
||||
struct brw_wm_surface_key {
|
||||
GLenum target, depthmode;
|
||||
dri_bo *bo;
|
||||
- GLint format;
|
||||
+ GLint format, internal_format;
|
||||
GLint first_level, last_level;
|
||||
GLint width, height, depth;
|
||||
GLint pitch, cpp;
|
||||
@@ -188,9 +195,11 @@
|
||||
|
||||
surf.ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
|
||||
surf.ss0.surface_type = translate_tex_target(key->target);
|
||||
-
|
||||
- if (key->bo)
|
||||
- surf.ss0.surface_format = translate_tex_format(key->format, key->depthmode);
|
||||
+ if (key->bo) {
|
||||
+ surf.ss0.surface_format = translate_tex_format(key->format,
|
||||
+ key->internal_format,
|
||||
+ key->depthmode);
|
||||
+ }
|
||||
else {
|
||||
switch (key->depth) {
|
||||
case 32:
|
||||
@@ -267,6 +276,7 @@
|
||||
key.offset = intelObj->textureOffset;
|
||||
} else {
|
||||
key.format = firstImage->TexFormat->MesaFormat;
|
||||
+ key.internal_format = firstImage->InternalFormat;
|
||||
key.pitch = intelObj->mt->pitch;
|
||||
key.depth = firstImage->Depth;
|
||||
key.bo = intelObj->mt->region->buffer;
|
||||
Index: mesa/src/mesa/drivers/dri/intel/intel_screen.c
|
||||
===================================================================
|
||||
--- mesa.orig/src/mesa/drivers/dri/intel/intel_screen.c 2009-04-03 11:45:43.000000000 +0300
|
||||
+++ mesa/src/mesa/drivers/dri/intel/intel_screen.c 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -210,6 +210,7 @@
|
||||
static const __DRItexBufferExtension intelTexBufferExtension = {
|
||||
{ __DRI_TEX_BUFFER, __DRI_TEX_BUFFER_VERSION },
|
||||
intelSetTexBuffer,
|
||||
+ intelSetTexBuffer2,
|
||||
};
|
||||
|
||||
static const __DRIextension *intelScreenExtensions[] = {
|
||||
Index: mesa/src/mesa/drivers/dri/intel/intel_tex.h
|
||||
===================================================================
|
||||
--- mesa.orig/src/mesa/drivers/dri/intel/intel_tex.h 2009-01-16 21:40:22.000000000 +0200
|
||||
+++ mesa/src/mesa/drivers/dri/intel/intel_tex.h 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -149,6 +149,8 @@
|
||||
unsigned long long offset, GLint depth, GLuint pitch);
|
||||
void intelSetTexBuffer(__DRIcontext *pDRICtx,
|
||||
GLint target, __DRIdrawable *pDraw);
|
||||
+void intelSetTexBuffer2(__DRIcontext *pDRICtx,
|
||||
+ GLint target, GLint format, __DRIdrawable *pDraw);
|
||||
|
||||
GLuint intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit);
|
||||
|
||||
Index: mesa/src/mesa/drivers/dri/intel/intel_tex_image.c
|
||||
===================================================================
|
||||
--- mesa.orig/src/mesa/drivers/dri/intel/intel_tex_image.c 2009-03-30 10:34:15.000000000 +0300
|
||||
+++ mesa/src/mesa/drivers/dri/intel/intel_tex_image.c 2009-04-03 11:45:43.000000000 +0300
|
||||
@@ -712,7 +712,9 @@
|
||||
}
|
||||
|
||||
void
|
||||
-intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
|
||||
+intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
|
||||
+ GLint glx_texture_format,
|
||||
+ __DRIdrawable *dPriv)
|
||||
{
|
||||
struct intel_framebuffer *intel_fb = dPriv->driverPrivate;
|
||||
struct intel_context *intel = pDRICtx->driverPrivate;
|
||||
@@ -743,7 +745,10 @@
|
||||
|
||||
type = GL_BGRA;
|
||||
format = GL_UNSIGNED_BYTE;
|
||||
- internalFormat = (rb->region->cpp == 3 ? 3 : 4);
|
||||
+ if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
|
||||
+ internalFormat = GL_RGB;
|
||||
+ else
|
||||
+ internalFormat = GL_RGBA;
|
||||
|
||||
mt = intel_miptree_create_for_region(intel, target,
|
||||
internalFormat,
|
||||
@@ -783,3 +788,12 @@
|
||||
|
||||
_mesa_unlock_texture(&intel->ctx, texObj);
|
||||
}
|
||||
+
|
||||
+void
|
||||
+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);
|
||||
+}
|
11
packages/graphics/Mesa/patches/105_glXWaitX-segfaults.diff
Normal file
11
packages/graphics/Mesa/patches/105_glXWaitX-segfaults.diff
Normal file
@ -0,0 +1,11 @@
|
||||
--- Mesa-7.4/src/glx/x11/drisw_glx.c 2009-01-22 17:38:33.000000000 +0000
|
||||
+++ Mesa-7.4/src/glx/x11/drisw_glx.c.fixed 2009-04-03 23:25:17.000000000 +0100
|
||||
@@ -405,6 +405,8 @@
|
||||
psp->createContext = driCreateContext;
|
||||
psp->createDrawable = driCreateDrawable;
|
||||
psp->swapBuffers = driSwapBuffers;
|
||||
+ psp->waitX = NULL;
|
||||
+ psp->waitGL = NULL;
|
||||
|
||||
return psp;
|
||||
|
@ -0,0 +1,91 @@
|
||||
#
|
||||
# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/368049
|
||||
# Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=17895
|
||||
# Patch: http://cgit.freedesktop.org/mesa/mesa/commit/?h=mesa_7_4_branch&id=a1ce4efefbb7f796a0a24544a1e893a56848f0c1
|
||||
# Description: fix xserver segv triggered by compiz ring switcher plugin for users
|
||||
# with r300/r400 radeon chipsets and -ati driver. Patch previously
|
||||
# commited to mesa master as c28707b50701b1cf8727be29d61e2d939c6ee58f
|
||||
# and also to mesa_7_4_branch as a1ce4efefbb7f796a0a24544a1e893a56848f0c1.
|
||||
# Note: it was commited to the 7.4 branch after mesa 7.4.0 release.
|
||||
# (LP: #368049)
|
||||
#
|
||||
|
||||
Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_context.h
|
||||
===================================================================
|
||||
--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_context.h 2009-05-04 12:07:48.000000000 +0200
|
||||
+++ mesa-7.4/src/mesa/drivers/dri/r300/r300_context.h 2009-05-04 12:08:56.000000000 +0200
|
||||
@@ -211,7 +211,7 @@
|
||||
};
|
||||
|
||||
struct r300_texture_env_state {
|
||||
- r300TexObjPtr texobj;
|
||||
+ struct gl_texture_object *texobj;
|
||||
GLenum format;
|
||||
GLenum envMode;
|
||||
};
|
||||
Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_state.c
|
||||
===================================================================
|
||||
--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_state.c 2009-05-04 12:07:59.000000000 +0200
|
||||
+++ mesa-7.4/src/mesa/drivers/dri/r300/r300_state.c 2009-05-04 12:08:56.000000000 +0200
|
||||
@@ -1487,7 +1487,7 @@
|
||||
#endif
|
||||
tmu_mappings[i] = hw_tmu;
|
||||
|
||||
- t = r300->state.texture.unit[i].texobj;
|
||||
+ t = (r300TexObjPtr) r300->state.texture.unit[i].texobj->DriverData;
|
||||
/* XXX questionable fix for bug 9170: */
|
||||
if (!t)
|
||||
continue;
|
||||
Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_texmem.c
|
||||
===================================================================
|
||||
--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_texmem.c 2009-05-04 12:08:07.000000000 +0200
|
||||
+++ mesa-7.4/src/mesa/drivers/dri/r300/r300_texmem.c 2009-05-04 12:08:56.000000000 +0200
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "main/colormac.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/simple_list.h"
|
||||
+#include "main/texobj.h"
|
||||
#include "radeon_reg.h" /* gets definition for usleep */
|
||||
#include "r300_context.h"
|
||||
#include "r300_state.h"
|
||||
@@ -71,8 +72,8 @@
|
||||
}
|
||||
|
||||
for (i = 0; i < rmesa->radeon.glCtx->Const.MaxTextureUnits; i++) {
|
||||
- if (rmesa->state.texture.unit[i].texobj == t) {
|
||||
- rmesa->state.texture.unit[i].texobj = NULL;
|
||||
+ if (rmesa->state.texture.unit[i].texobj == t->base.tObj) {
|
||||
+ _mesa_reference_texobj(&rmesa->state.texture.unit[i].texobj, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_texstate.c
|
||||
===================================================================
|
||||
--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_texstate.c 2009-05-04 12:08:17.000000000 +0200
|
||||
+++ mesa-7.4/src/mesa/drivers/dri/r300/r300_texstate.c 2009-05-04 12:08:56.000000000 +0200
|
||||
@@ -567,19 +567,20 @@
|
||||
/* Update state if this is a different texture object to last
|
||||
* time.
|
||||
*/
|
||||
- if (rmesa->state.texture.unit[unit].texobj != t) {
|
||||
+ if (rmesa->state.texture.unit[unit].texobj != tObj) {
|
||||
if (rmesa->state.texture.unit[unit].texobj != NULL) {
|
||||
+ r300TexObjPtr t_old = (r300TexObjPtr) rmesa->state.texture.unit[unit].texobj->DriverData;
|
||||
+
|
||||
/* The old texture is no longer bound to this texture unit.
|
||||
* Mark it as such.
|
||||
*/
|
||||
|
||||
- rmesa->state.texture.unit[unit].texobj->base.bound &=
|
||||
- ~(1 << unit);
|
||||
+ t_old->base.bound &= ~(1 << unit);
|
||||
}
|
||||
|
||||
- rmesa->state.texture.unit[unit].texobj = t;
|
||||
+ _mesa_reference_texobj(&rmesa->state.texture.unit[unit].texobj, tObj);
|
||||
t->base.bound |= (1 << unit);
|
||||
- driUpdateTextureLRU((driTextureObject *) t); /* XXX: should be locked! */
|
||||
+ driUpdateTextureLRU(&t->base); /* XXX: should be locked! */
|
||||
}
|
||||
|
||||
return !t->border_fallback;
|
Loading…
x
Reference in New Issue
Block a user