mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-23 04:00:23 +01:00
intel: check texture formats in intel_validate_framebuffer()
We can't render into any texture format; only certain formats. Check that render-to-texture's format is renderable in the intel_validate_framebuffer() There seems to be a bug somewhere that causes rendering to rgb565 textures to be corrupted so disallow that for now. This will be revisted.
This commit is contained in:
parent
645f220710
commit
f77b720cde
1 changed files with 29 additions and 0 deletions
|
|
@ -634,6 +634,7 @@ intel_finish_render_texture(GLcontext * ctx,
|
|||
static void
|
||||
intel_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
|
||||
{
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
const struct intel_renderbuffer *depthRb =
|
||||
intel_get_renderbuffer(fb, BUFFER_DEPTH);
|
||||
const struct intel_renderbuffer *stencilRb =
|
||||
|
|
@ -645,6 +646,34 @@ intel_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
|
|||
*/
|
||||
fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
|
||||
}
|
||||
|
||||
/* check that texture color buffers are a format we can render into */
|
||||
{
|
||||
const struct gl_texture_format *supportedFormat;
|
||||
GLuint i;
|
||||
|
||||
/* The texture format we can render into seems to depend on the
|
||||
* screen depth. There currently seems to be a problem when
|
||||
* rendering into a rgb565 texture when the screen is abgr8888.
|
||||
*/
|
||||
if (intel->front_region->cpp == 4)
|
||||
supportedFormat = &_mesa_texformat_argb8888;
|
||||
else
|
||||
supportedFormat = &_mesa_texformat_rgb565;
|
||||
|
||||
for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
|
||||
const struct gl_texture_object *texObj =
|
||||
fb->Attachment[BUFFER_COLOR0 + i].Texture;
|
||||
if (texObj) {
|
||||
const struct gl_texture_image *texImg =
|
||||
texObj->Image[0][texObj->BaseLevel];
|
||||
if (texImg && texImg->TexFormat != supportedFormat) {
|
||||
fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue