Check/use texture border color when sampling depth textures. (bug 6498)

Silence some warnings.
This commit is contained in:
Brian Paul
2006-04-05 03:23:44 +00:00
parent 28b014ee25
commit 9ebe3b6d36

View File

@@ -1,8 +1,8 @@
/* /*
* Mesa 3-D graphics library * Mesa 3-D graphics library
* Version: 6.5 * Version: 6.5.1
* *
* Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), * copy of this software and associated documentation files (the "Software"),
@@ -1038,6 +1038,8 @@ sample_2d_linear_repeat(GLcontext *ctx,
GLfloat a, b; GLfloat a, b;
GLchan t00[4], t10[4], t01[4], t11[4]; /* sampled texel colors */ GLchan t00[4], t10[4], t01[4], t11[4]; /* sampled texel colors */
(void) ctx;
ASSERT(tObj->WrapS == GL_REPEAT); ASSERT(tObj->WrapS == GL_REPEAT);
ASSERT(tObj->WrapT == GL_REPEAT); ASSERT(tObj->WrapT == GL_REPEAT);
ASSERT(img->Border == 0); ASSERT(img->Border == 0);
@@ -2239,8 +2241,8 @@ sample_depth_texture( GLcontext *ctx,
{ {
const GLint baseLevel = tObj->BaseLevel; const GLint baseLevel = tObj->BaseLevel;
const struct gl_texture_image *img = tObj->Image[0][baseLevel]; const struct gl_texture_image *img = tObj->Image[0][baseLevel];
const GLuint width = img->Width; const GLint width = img->Width;
const GLuint height = img->Height; const GLint height = img->Height;
GLchan ambient; GLchan ambient;
GLenum function; GLenum function;
GLchan result; GLchan result;
@@ -2285,7 +2287,12 @@ sample_depth_texture( GLcontext *ctx,
/* XXX fix for texture rectangle! */ /* XXX fix for texture rectangle! */
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0], width, col); COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0], width, col);
COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoords[i][1], height, row); COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoords[i][1], height, row);
img->FetchTexelf(img, col, row, 0, &depthSample); if (col >= 0 && row >= 0 && col < width && row < height) {
img->FetchTexelf(img, col, row, 0, &depthSample);
}
else {
depthSample = tObj->BorderColor[0];
}
switch (function) { switch (function) {
case GL_LEQUAL: case GL_LEQUAL:
@@ -2373,25 +2380,25 @@ sample_depth_texture( GLcontext *ctx,
/* get four depth samples from the texture */ /* get four depth samples from the texture */
if (useBorderTexel & (I0BIT | J0BIT)) { if (useBorderTexel & (I0BIT | J0BIT)) {
depth00 = 1.0; depth00 = tObj->BorderColor[0];
} }
else { else {
img->FetchTexelf(img, i0, j0, 0, &depth00); img->FetchTexelf(img, i0, j0, 0, &depth00);
} }
if (useBorderTexel & (I1BIT | J0BIT)) { if (useBorderTexel & (I1BIT | J0BIT)) {
depth10 = 1.0; depth10 = tObj->BorderColor[0];
} }
else { else {
img->FetchTexelf(img, i1, j0, 0, &depth10); img->FetchTexelf(img, i1, j0, 0, &depth10);
} }
if (useBorderTexel & (I0BIT | J1BIT)) { if (useBorderTexel & (I0BIT | J1BIT)) {
depth01 = 1.0; depth01 = tObj->BorderColor[0];
} }
else { else {
img->FetchTexelf(img, i0, j1, 0, &depth01); img->FetchTexelf(img, i0, j1, 0, &depth01);
} }
if (useBorderTexel & (I1BIT | J1BIT)) { if (useBorderTexel & (I1BIT | J1BIT)) {
depth11 = 1.0; depth11 = tObj->BorderColor[0];
} }
else { else {
img->FetchTexelf(img, i1, j1, 0, &depth11); img->FetchTexelf(img, i1, j1, 0, &depth11);