mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
st: as with swrast, interpret texture border color according to texture format
Depending on the hardware driver this might not be needed, but it will cause no harm.
This commit is contained in:
parent
a07e68df68
commit
89276e2aaf
1 changed files with 37 additions and 4 deletions
|
|
@ -118,6 +118,37 @@ gl_filter_to_img_filter(GLenum filter)
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
xlate_border_color(const GLfloat *colorIn, GLenum baseFormat, GLfloat *colorOut)
|
||||
{
|
||||
switch (baseFormat) {
|
||||
case GL_RGB:
|
||||
colorOut[0] = colorIn[0];
|
||||
colorOut[1] = colorIn[1];
|
||||
colorOut[2] = colorIn[2];
|
||||
colorOut[3] = 1.0F;
|
||||
break;
|
||||
case GL_ALPHA:
|
||||
colorOut[0] = colorOut[1] = colorOut[2] = 0.0;
|
||||
colorOut[3] = colorIn[3];
|
||||
break;
|
||||
case GL_LUMINANCE:
|
||||
colorOut[0] = colorOut[1] = colorOut[2] = colorIn[0];
|
||||
colorOut[3] = 1.0;
|
||||
break;
|
||||
case GL_LUMINANCE_ALPHA:
|
||||
colorOut[0] = colorOut[1] = colorOut[2] = colorIn[0];
|
||||
colorOut[3] = colorIn[3];
|
||||
break;
|
||||
case GL_INTENSITY:
|
||||
colorOut[0] = colorOut[1] = colorOut[2] = colorOut[3] = colorIn[0];
|
||||
break;
|
||||
default:
|
||||
COPY_4V(colorOut, colorIn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
update_samplers(struct st_context *st)
|
||||
{
|
||||
|
|
@ -137,6 +168,7 @@ update_samplers(struct st_context *st)
|
|||
|
||||
if (samplersUsed & (1 << su)) {
|
||||
struct gl_texture_object *texobj;
|
||||
struct gl_texture_image *teximg;
|
||||
GLuint texUnit;
|
||||
|
||||
if (fprog->Base.SamplersUsed & (1 << su))
|
||||
|
|
@ -149,6 +181,8 @@ update_samplers(struct st_context *st)
|
|||
texobj = st_get_default_texture(st);
|
||||
}
|
||||
|
||||
teximg = texobj->Image[0][texobj->BaseLevel];
|
||||
|
||||
sampler->wrap_s = gl_wrap_xlate(texobj->WrapS);
|
||||
sampler->wrap_t = gl_wrap_xlate(texobj->WrapT);
|
||||
sampler->wrap_r = gl_wrap_xlate(texobj->WrapR);
|
||||
|
|
@ -174,10 +208,9 @@ update_samplers(struct st_context *st)
|
|||
assert(sampler->min_lod <= sampler->max_lod);
|
||||
}
|
||||
|
||||
sampler->border_color[0] = texobj->BorderColor[RCOMP];
|
||||
sampler->border_color[1] = texobj->BorderColor[GCOMP];
|
||||
sampler->border_color[2] = texobj->BorderColor[BCOMP];
|
||||
sampler->border_color[3] = texobj->BorderColor[ACOMP];
|
||||
xlate_border_color(texobj->BorderColor,
|
||||
teximg ? teximg->TexFormat->BaseFormat : GL_RGBA,
|
||||
sampler->border_color);
|
||||
|
||||
sampler->max_anisotropy = texobj->MaxAnisotropy;
|
||||
if (sampler->max_anisotropy > 1.0) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue