[Mesa-dev] [PATCH] i965: Set a proper _BaseFormat for window system renderbuffers in ES.

Iago Toral itoral at igalia.com
Wed Mar 9 15:35:01 UTC 2016


Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>

On Tue, 2016-03-08 at 20:50 -0800, Kenneth Graunke wrote:
> intel_alloc_private_renderbuffer_storage did:
> 
>    rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
> 
> Unfortunately, internalFormat was usually an unsized format (such as
> GL_DEPTH_COMPONENT).  In OpenGL ES, _mesa_base_fbo_format() refuses to
> accept unsized formats, and returns 0 rather than a real base format.
> 
> This meant that we ended up with a completely bogus rb->_BaseFormat for
> window system buffers on OpenGL ES.  All other renderbuffer allocation
> functions in intel_fbo.c instead use the mesa_format, and do:
> 
>    rb->_BaseFormat = _mesa_get_format_base_format(...);
> 
> We can do likewise, using rb->Format.  This appears to work just fine.
> 
> dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_x_size_initial
> failed, as it tried to perform a GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE query
> on the window system depth buffer.  That query relies on a proper
> rb->_BaseFormat being set, so it broke because rb->_BaseFormat was 0 due
> to the above bug.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94458
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/intel_fbo.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c
> index 3a4a53a..b7b6796 100644
> --- a/src/mesa/drivers/dri/i965/intel_fbo.c
> +++ b/src/mesa/drivers/dri/i965/intel_fbo.c
> @@ -289,7 +289,7 @@ intel_alloc_private_renderbuffer_storage(struct gl_context * ctx, struct gl_rend
>     rb->NumSamples = intel_quantize_num_samples(screen, rb->NumSamples);
>     rb->Width = width;
>     rb->Height = height;
> -   rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
> +   rb->_BaseFormat = _mesa_get_format_base_format(rb->Format);
>  
>     intel_miptree_release(&irb->mt);
>  




More information about the mesa-dev mailing list