summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Dergachev <volodya@freedesktop.org>2005-01-03 06:48:50 +0000
committerVladimir Dergachev <volodya@freedesktop.org>2005-01-03 06:48:50 +0000
commit63473a8e76dadc0f56e222866066bb4a242700d9 (patch)
tree410c206999e9a1a3ed606b7a605682a843e0b628
parent2fc9351ee768ce0c123ce1d9b210dc6958ab41b2 (diff)
Enable code to compute other constants that were used by R200 code.
Add fprintf to print these constants. Correct t->size computation, so it works now.
-rw-r--r--src/mesa/drivers/dri/r300/r300_context.h9
-rw-r--r--src/mesa/drivers/dri/r300/r300_render.c5
-rw-r--r--src/mesa/drivers/dri/r300/r300_tex.c36
-rw-r--r--src/mesa/drivers/dri/r300/r300_texstate.c9
4 files changed, 30 insertions, 29 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h
index 54826ea801..af27979280 100644
--- a/src/mesa/drivers/dri/r300/r300_context.h
+++ b/src/mesa/drivers/dri/r300/r300_context.h
@@ -149,6 +149,15 @@ struct r300_tex_obj {
GLuint unknown5;
/* end hardware registers */
+ /* registers computed by r200 code - keep them here to
+ compare against what is actually written.
+
+ to be removed later.. */
+ GLuint pp_border_color;
+ GLuint pp_cubic_faces; /* cube face 1,2,3,4 log2 sizes */
+ GLuint format_x;
+
+
GLboolean border_fallback;
};
diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c
index c16a960a5d..5cec6eff56 100644
--- a/src/mesa/drivers/dri/r300/r300_render.c
+++ b/src/mesa/drivers/dri/r300/r300_render.c
@@ -585,11 +585,14 @@ static GLboolean r300_run_tex_render(GLcontext *ctx,
/* Use actual texture offset */
+ fprintf(stderr,"pp_border_color=%08x pp_cubic_faces=%08x format=%08x size=%08x format_x=%08x\n",
+ t->pp_border_color, t->pp_cubic_faces, t->format, t->size, t->format_x);
+
SINGLE_TEXTURE_PIPELINE.texture_unit[0].offset=rmesa->radeon.radeonScreen->fbLocation+t->offset;
#if 0
SINGLE_TEXTURE_PIPELINE.texture_unit[0].format=t->format;
- SINGLE_TEXTURE_PIPELINE.texture_unit[0].size=t->size;
#endif
+ SINGLE_TEXTURE_PIPELINE.texture_unit[0].size=t->size;
SINGLE_TEXTURE_PIPELINE.texture_unit[0].filter=t->filter;
SINGLE_TEXTURE_PIPELINE.texture_unit[0].unknown1=t->pitch; /* Unknown 1 is pitch ! */
SINGLE_TEXTURE_PIPELINE.texture_unit[0].filter=t->filter;
diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c
index bdbdc0b890..d32b9f0288 100644
--- a/src/mesa/drivers/dri/r300/r300_tex.c
+++ b/src/mesa/drivers/dri/r300/r300_tex.c
@@ -136,42 +136,40 @@ static void r300SetTexWrap(r300TexObjPtr t, GLenum swrap, GLenum twrap,
_mesa_problem(NULL, "bad T wrap mode in %s", __FUNCTION__);
}
- #if 0 /* Which field is this ? */
- t->pp_txformat_x &= ~R200_CLAMP_Q_MASK;
+ t->format_x &= ~R200_CLAMP_Q_MASK;
switch (rwrap) {
case GL_REPEAT:
- t->pp_txformat_x |= R200_CLAMP_Q_WRAP;
+ t->format_x |= R200_CLAMP_Q_WRAP;
break;
case GL_CLAMP:
- t->pp_txformat_x |= R200_CLAMP_Q_CLAMP_GL;
+ t->format_x |= R200_CLAMP_Q_CLAMP_GL;
is_clamp = GL_TRUE;
break;
case GL_CLAMP_TO_EDGE:
- t->pp_txformat_x |= R200_CLAMP_Q_CLAMP_LAST;
+ t->format_x |= R200_CLAMP_Q_CLAMP_LAST;
break;
case GL_CLAMP_TO_BORDER:
- t->pp_txformat_x |= R200_CLAMP_Q_CLAMP_GL;
+ t->format_x |= R200_CLAMP_Q_CLAMP_GL;
is_clamp_to_border = GL_TRUE;
break;
case GL_MIRRORED_REPEAT:
- t->pp_txformat_x |= R200_CLAMP_Q_MIRROR;
+ t->format_x |= R200_CLAMP_Q_MIRROR;
break;
case GL_MIRROR_CLAMP_EXT:
- t->pp_txformat_x |= R200_CLAMP_Q_MIRROR_CLAMP_GL;
+ t->format_x |= R200_CLAMP_Q_MIRROR_CLAMP_GL;
is_clamp = GL_TRUE;
break;
case GL_MIRROR_CLAMP_TO_EDGE_EXT:
- t->pp_txformat_x |= R200_CLAMP_Q_MIRROR_CLAMP_LAST;
+ t->format_x |= R200_CLAMP_Q_MIRROR_CLAMP_LAST;
break;
case GL_MIRROR_CLAMP_TO_BORDER_EXT:
- t->pp_txformat_x |= R200_CLAMP_Q_MIRROR_CLAMP_GL;
+ t->format_x |= R200_CLAMP_Q_MIRROR_CLAMP_GL;
is_clamp_to_border = GL_TRUE;
break;
default:
_mesa_problem(NULL, "bad R wrap mode in %s", __FUNCTION__);
}
- #endif
if (is_clamp_to_border) {
t->filter |= R200_BORDER_MODE_D3D;
@@ -210,9 +208,7 @@ static void r300SetTexFilter(r300TexObjPtr t, GLenum minf, GLenum magf)
GLuint anisotropy = (t->filter & R200_MAX_ANISO_MASK);
t->filter &= ~(R200_MIN_FILTER_MASK | R200_MAG_FILTER_MASK);
- #if 0
- t->pp_txformat_x &= ~R200_VOLUME_FILTER_MASK;
- #endif
+ t->format_x &= ~R200_VOLUME_FILTER_MASK;
if (anisotropy == R200_MAX_ANISO_1_TO_1) {
switch (minf) {
@@ -262,24 +258,18 @@ static void r300SetTexFilter(r300TexObjPtr t, GLenum minf, GLenum magf)
switch (magf) {
case GL_NEAREST:
t->filter |= R200_MAG_FILTER_NEAREST;
- #if 0
- t->pp_txformat_x |= R200_VOLUME_FILTER_NEAREST;
- #endif
+ t->format_x |= R200_VOLUME_FILTER_NEAREST;
break;
case GL_LINEAR:
t->filter |= R200_MAG_FILTER_LINEAR;
- #if 0
- t->pp_txformat_x |= R200_VOLUME_FILTER_LINEAR;
- #endif
+ t->format_x |= R200_VOLUME_FILTER_LINEAR;
break;
}
}
static void r300SetTexBorderColor(r300TexObjPtr t, GLubyte c[4])
{
- #if 0
t->pp_border_color = radeonPackColor(4, c[0], c[1], c[2], c[3]);
- #endif
}
/**
@@ -1039,7 +1029,7 @@ void r300InitTextureFuncs(struct dd_function_table *functions)
driInitTextureFormats();
-#if 000
+#if 0
/* moved or obsolete code */
r300ContextPtr rmesa = R300_CONTEXT(ctx);
driInitTextureObjects(ctx, &rmesa->swapped,
diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c
index 6962bb3ddb..22d1d6c6f9 100644
--- a/src/mesa/drivers/dri/r300/r300_texstate.c
+++ b/src/mesa/drivers/dri/r300/r300_texstate.c
@@ -46,6 +46,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//#include "r300_swtcl.h"
#include "r300_tex.h"
//#include "r300_tcl.h"
+#include "r300_reg.h"
#define R200_TXFORMAT_A8 R200_TXFORMAT_I8
#define R200_TXFORMAT_L8 R200_TXFORMAT_I8
@@ -246,7 +247,6 @@ static void r300SetTexImages(r300ContextPtr rmesa,
t->format |= ((log2Width << R200_TXFORMAT_WIDTH_SHIFT) |
(log2Height << R200_TXFORMAT_HEIGHT_SHIFT));
- #if 0
t->format_x &= ~(R200_DEPTH_LOG2_MASK | R200_TEXCOORD_MASK);
if (tObj->Target == GL_TEXTURE_3D) {
t->format_x |= (log2Depth << R200_DEPTH_LOG2_SHIFT);
@@ -266,11 +266,10 @@ static void r300SetTexImages(r300ContextPtr rmesa,
(log2Width << R200_FACE_WIDTH_4_SHIFT) |
(log2Height << R200_FACE_HEIGHT_4_SHIFT));
}
- #endif
- t->size = (((tObj->Image[0][t->base.firstLevel]->Width - 1) << 0) |
- ((tObj->Image[0][t->base.firstLevel]->Height -
- 1) << 16));
+ t->size = (((tObj->Image[0][t->base.firstLevel]->Width - 1) << R300_TX_WIDTHMASK_SHIFT)
+ |((tObj->Image[0][t->base.firstLevel]->Height - 1) << R300_TX_HEIGHTMASK_SHIFT)
+ |((log2Width>log2Height)?log2Width:log2Height)<<R300_TX_SIZE_SHIFT);
/* Only need to round to nearest 32 for textures, but the blitter
* requires 64-byte aligned pitches, and we may/may not need the