intel: fix texture border issue. (bug #16697)
This commit is contained in:
parent
3bfedb7ed4
commit
b4b7326717
|
@ -73,7 +73,10 @@ static GLboolean do_check_fallback(struct brw_context *brw)
|
|||
if (texUnit->_ReallyEnabled) {
|
||||
struct intel_texture_object *intelObj = intel_texture_object(texUnit->_Current);
|
||||
struct gl_texture_image *texImage = intelObj->base.Image[0][intelObj->firstLevel];
|
||||
if (texImage->Border) {
|
||||
if (texImage->Border ||
|
||||
((texImage->_BaseFormat == GL_DEPTH_COMPONENT) &&
|
||||
((texImage->TexObject->WrapS == GL_CLAMP_TO_BORDER) ||
|
||||
(texImage->TexObject->WrapT == GL_CLAMP_TO_BORDER)))) {
|
||||
DBG("FALLBACK: texture border\n");
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
|
|
@ -265,7 +265,10 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt,
|
|||
{
|
||||
/* Images with borders are never pulled into mipmap trees.
|
||||
*/
|
||||
if (image->Border)
|
||||
if (image->Border ||
|
||||
((image->_BaseFormat == GL_DEPTH_COMPONENT) &&
|
||||
((image->TexObject->WrapS == GL_CLAMP_TO_BORDER) ||
|
||||
(image->TexObject->WrapT == GL_CLAMP_TO_BORDER))))
|
||||
return GL_FALSE;
|
||||
|
||||
if (image->InternalFormat != mt->internal_format ||
|
||||
|
|
|
@ -75,7 +75,10 @@ guess_and_alloc_mipmap_tree(struct intel_context *intel,
|
|||
|
||||
DBG("%s\n", __FUNCTION__);
|
||||
|
||||
if (intelImage->base.Border)
|
||||
if (intelImage->base.Border ||
|
||||
((intelImage->base._BaseFormat == GL_DEPTH_COMPONENT) &&
|
||||
((intelObj->base.WrapS == GL_CLAMP_TO_BORDER) ||
|
||||
(intelObj->base.WrapT == GL_CLAMP_TO_BORDER))))
|
||||
return;
|
||||
|
||||
if (intelImage->level > intelObj->base.BaseLevel &&
|
||||
|
|
|
@ -144,7 +144,10 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
|
|||
|
||||
/* Fallback case:
|
||||
*/
|
||||
if (firstImage->base.Border) {
|
||||
if (firstImage->base.Border ||
|
||||
((firstImage->base._BaseFormat == GL_DEPTH_COMPONENT) &&
|
||||
((tObj->WrapS == GL_CLAMP_TO_BORDER) ||
|
||||
(tObj->WrapT == GL_CLAMP_TO_BORDER)))) {
|
||||
if (intelObj->mt) {
|
||||
intel_miptree_release(intel, &intelObj->mt);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue