[Mesa-dev] [PATCH] intel: FBOs with texture border are unsupported
Ian Romanick
idr at freedesktop.org
Wed Feb 1 09:31:23 PST 2012
From: Ian Romanick <ian.d.romanick at 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.romanick at 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
More information about the mesa-dev
mailing list