mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 11:08:03 +02:00
meta/generate_mipmap: Work-around GLES 1.x problem with GL_DRAW_FRAMEBUFFER
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@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93215
Cc: "11.0 11.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
(cherry picked from commit 96dc732ed8)
This commit is contained in:
parent
646be4a262
commit
b26945c2ed
1 changed files with 13 additions and 4 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue