[Mesa-dev] [Mesa-stable] [PATCH] meta/generate_mipmap: Work-around GLES 1.x problem with GL_DRAW_FRAMEBUFFER

Ian Romanick idr at freedesktop.org
Mon Dec 14 13:09:04 PST 2015


On 12/12/2015 10:50 AM, Emil Velikov wrote:
> On 3 December 2015 at 23:52, Anuj Phogat <anuj.phogat at gmail.com> wrote:
>> On Thu, Dec 3, 2015 at 2:43 PM, Ian Romanick <idr at freedesktop.org> wrote:
>>> From: Ian Romanick <ian.d.romanick at intel.com>
>>>
>>> GL_DRAW_FRAMEBUFFER does not exist in OpenGL ES 1.x, and since
>>> _mesa_meta_begin hasn't been called yet, we have to work-around API
>>> difficulties.  The whole reason that GL_DRAW_FRAMEBUFFER is used instead
>>> of GL_FRAMEBUFFER is that the read framebuffer may be different.  This
>>> is moot in OpenGL ES 1.x.
>>>
>>> I have another patch series that would also fix this (by removing the
>>> calls to _mesa_BindFramebuffer and friends), but it's not quite ready
>>> yet... and I think it may be a bit heavy for some stable branches.
>>> Consider this a stop-gap fix.
>>>
>>> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93215
>>> Cc: "11.0 11.1" <mesa-stable at lists.freedesktop.org>
>>> ---
>>>  src/mesa/drivers/common/meta_generate_mipmap.c | 17 +++++++++++++----
>>>  1 file changed, 13 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/src/mesa/drivers/common/meta_generate_mipmap.c b/src/mesa/drivers/common/meta_generate_mipmap.c
>>> index d38e6b8..2b942d6 100644
>>> --- a/src/mesa/drivers/common/meta_generate_mipmap.c
>>> +++ b/src/mesa/drivers/common/meta_generate_mipmap.c
>>> @@ -62,6 +62,15 @@ fallback_required(struct gl_context *ctx, GLenum target,
>>>     GLuint srcLevel;
>>>     GLenum status;
>>>
>>> +   /* GL_DRAW_FRAMEBUFFER does not exist in OpenGL ES 1.x, and since
>>> +    * _mesa_meta_begin hasn't been called yet, we have to work-around API
>>> +    * difficulties.  The whole reason that GL_DRAW_FRAMEBUFFER is used instead
>>> +    * of GL_FRAMEBUFFER is that the read framebuffer may be different.  This
>>> +    * is moot in OpenGL ES 1.x.
>>> +    */
>>> +   const GLenum fbo_target = ctx->API == API_OPENGLES
>>> +      ? GL_FRAMEBUFFER : GL_DRAW_FRAMEBUFFER;
>>> +
>>>     /* check for fallbacks */
>>>     if (target == GL_TEXTURE_3D) {
>>>        _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH,
>>> @@ -102,13 +111,13 @@ fallback_required(struct gl_context *ctx, GLenum target,
>>>      */
>>>     if (!mipmap->FBO)
>>>        _mesa_GenFramebuffers(1, &mipmap->FBO);
>>> -   _mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, mipmap->FBO);
>>> +   _mesa_BindFramebuffer(fbo_target, mipmap->FBO);
>>>
>>> -   _mesa_meta_bind_fbo_image(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, baseImage, 0);
>>> +   _mesa_meta_bind_fbo_image(fbo_target, GL_COLOR_ATTACHMENT0, baseImage, 0);
>>>
>>> -   status = _mesa_CheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
>>> +   status = _mesa_CheckFramebufferStatus(fbo_target);
>>>
>>> -   _mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, fboSave);
>>> +   _mesa_BindFramebuffer(fbo_target, fboSave);
>>>
>>>     if (status != GL_FRAMEBUFFER_COMPLETE_EXT) {
>>>        _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH,
>>> --
>>> 2.5.0
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>
>> Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
> Am I missing something or this patch hasn't landed in master ? Is
> there another work that makes it obsolete or anything ?

Aw crap... thanks for the reminder.  Pushing it right now.

> Thanks
> Emil
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-stable



More information about the mesa-dev mailing list