From: Ian Romanick <ian.d.roman...@intel.com> FBOs differ from textures in a significant way. With textures, we can strip the border and get correct rendering except when the application fetches texels outside [0,1].
With an FBO, the pixel at (0,0) is in the border. The ARB_framebuffer_object spec says: "If the attached image is a texture image, then the window coordinates (x[w], y[w]) correspond to the texel (i, j, k), from figure 3.10 as follows: i = (x[w] - b) j = (y[w] - b) k = (layer - b) where <b> is the texture image's border width..." Since the border doesn't exist, we can never render any pixels in the correct location. Just mark these FBOs FRAMEBUFFER_UNSUPPORTED. Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42336 --- src/mesa/drivers/dri/intel/intel_fbo.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 2ba43ac..62ed754 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -746,6 +746,7 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) for (i = 0; i < Elements(fb->Attachment); i++) { struct gl_renderbuffer *rb; + struct gl_texture_object *tex; struct intel_renderbuffer *irb; if (fb->Attachment[i].Type == GL_NONE) @@ -762,6 +763,18 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) continue; } + tex = fb->Attachment[i].Texture; + if (tex != NULL) { + const unsigned face = fb->Attachment[i].CubeMapFace; + const unsigned level = fb->Attachment[i].TextureLevel; + + if (tex->Image[face][level]->Border) { + DBG("texture with border\n"); + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + continue; + } + } + irb = intel_renderbuffer(rb); if (irb == NULL) { DBG("software rendering renderbuffer\n"); -- 1.7.6.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev