[Spice-devel] [PATCH] server: remove OpenGL

Fabiano Fidêncio fabiano at fidencio.org
Fri Nov 20 08:23:23 PST 2015


On Fri, Nov 20, 2015 at 5:22 PM, Frediano Ziglio <fziglio at redhat.com> wrote:
> From: Marc-André Lureau <marcandre.lureau at gmail.com>
>
> This is really not supported, requires X11, so better to remove it for
> now. Some day it might be revived, using DRM, ..
>
> Note for later, this could be removed too (not used by client):
> - spice-common/common/ogl_ctx
> ---
>  configure.ac             |  7 -----
>  server/Makefile.am       |  7 -----
>  server/display-channel.h |  4 ---
>  server/red_dispatcher.c  |  6 -----
>  server/red_worker.c      | 69 ------------------------------------------------
>  server/reds.c            |  4 ---
>  server/reds.h            |  2 --
>  server/reds_gl_canvas.c  | 26 ------------------
>  server/reds_gl_canvas.h  | 25 ------------------
>  9 files changed, 150 deletions(-)
>  delete mode 100644 server/reds_gl_canvas.c
>  delete mode 100644 server/reds_gl_canvas.h
>
>
> Changes:
> - removed configure.ac lines suggested by Fabiano;
> - removed ${enable_opengl} usage in configure.ac.
>
>
> diff --git a/configure.ac b/configure.ac
> index c8cce47..736bc2b 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -67,12 +67,6 @@ esac
>
>  dnl =========================================================================
>  dnl Check optional features
> -SPICE_CHECK_OPENGL
> -AS_IF([test x"$enable_opengl" != "xno"], [
> -      AS_VAR_APPEND([SPICE_NONPKGCONFIG_LIBS], [" $GL_LIBS"])
> -])
> -
> -
>  SPICE_CHECK_SMARTCARD
>
>  AC_ARG_ENABLE([automated_tests],
> @@ -294,7 +288,6 @@ AC_MSG_NOTICE([
>          c++ compiler:             ${CXX}
>          python:                   ${PYTHON}
>
> -        OpenGL:                   ${enable_opengl}
>          LZ4 support:              ${enable_lz4}
>          Smartcard:                ${have_smartcard}
>          SASL support:             ${enable_sasl}
> diff --git a/server/Makefile.am b/server/Makefile.am
> index 64d0e7d..db1cbc3 100644
> --- a/server/Makefile.am
> +++ b/server/Makefile.am
> @@ -146,13 +146,6 @@ libspice_server_la_SOURCES =                       \
>         dcc-encoders.h                                  \
>         $(NULL)
>
> -if HAVE_GL
> -libspice_server_la_SOURCES +=  \
> -       reds_gl_canvas.c        \
> -       reds_gl_canvas.h        \
> -       $(NULL)
> -endif
> -
>  if HAVE_SMARTCARD
>  libspice_server_la_SOURCES +=  \
>         smartcard.c             \
> diff --git a/server/display-channel.h b/server/display-channel.h
> index 233c391..4a50912 100644
> --- a/server/display-channel.h
> +++ b/server/display-channel.h
> @@ -25,10 +25,6 @@
>  #include "reds_stream.h"
>  #include "cache-item.h"
>  #include "pixmap-cache.h"
> -#ifdef USE_OPENGL
> -#include "common/ogl_ctx.h"
> -#include "reds_gl_canvas.h"
> -#endif /* USE_OPENGL */
>  #include "reds_sw_canvas.h"
>  #include "stat.h"
>  #include "reds.h"
> diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c
> index 3845c5a..d84869a 100644
> --- a/server/red_dispatcher.c
> +++ b/server/red_dispatcher.c
> @@ -33,9 +33,6 @@
>  #include "spice.h"
>  #include "red_worker.h"
>  #include "reds_sw_canvas.h"
> -#ifdef USE_OPENGL
> -#include "reds_gl_canvas.h"
> -#endif // USE_OPENGL
>  #include "reds.h"
>  #include "dispatcher.h"
>  #include "red_parse_qxl.h"
> @@ -1013,9 +1010,6 @@ void red_dispatcher_init(QXLInstance *qxl)
>      if (g_once_init_enter(&initialized)) {
>          quic_init();
>          sw_canvas_init();
> -#ifdef USE_OPENGL
> -        gl_canvas_init();
> -#endif // USE_OPENGL
>          g_once_init_leave(&initialized, TRUE);
>      }
>
> diff --git a/server/red_worker.c b/server/red_worker.c
> index bbd1d53..772590c 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -4162,63 +4162,6 @@ static void red_migrate_display(DisplayChannel *display, RedChannelClient *rcc)
>      }
>  }
>
> -#ifdef USE_OPENGL
> -static SpiceCanvas *create_ogl_context_common(DisplayChannel *display, OGLCtx *ctx,
> -                                              uint32_t width, uint32_t height,
> -                                              int32_t stride, uint8_t depth)
> -{
> -    SpiceCanvas *canvas;
> -
> -    oglctx_make_current(ctx);
> -    if (!(canvas = gl_canvas_create(width, height, depth, &display->image_cache.base,
> -                                    &display->image_surfaces, NULL, NULL, NULL))) {
> -        return NULL;
> -    }
> -
> -    spice_canvas_set_usr_data(canvas, ctx, (spice_destroy_fn_t)oglctx_destroy);
> -
> -    canvas->ops->clear(canvas);
> -
> -    return canvas;
> -}
> -
> -static SpiceCanvas *create_ogl_pbuf_context(DisplayChannel *display, uint32_t width,
> -                                            uint32_t height, int32_t stride, uint8_t depth)
> -{
> -    OGLCtx *ctx;
> -    SpiceCanvas *canvas;
> -
> -    if (!(ctx = pbuf_create(width, height))) {
> -        return NULL;
> -    }
> -
> -    if (!(canvas = create_ogl_context_common(display, ctx, width, height, stride, depth))) {
> -        oglctx_destroy(ctx);
> -        return NULL;
> -    }
> -
> -    return canvas;
> -}
> -
> -static SpiceCanvas *create_ogl_pixmap_context(DisplayChannel *display, uint32_t width,
> -                                              uint32_t height, int32_t stride, uint8_t depth)
> -{
> -    OGLCtx *ctx;
> -    SpiceCanvas *canvas;
> -
> -    if (!(ctx = pixmap_create(width, height))) {
> -        return NULL;
> -    }
> -
> -    if (!(canvas = create_ogl_context_common(display, ctx, width, height, stride, depth))) {
> -        oglctx_destroy(ctx);
> -        return NULL;
> -    }
> -
> -    return canvas;
> -}
> -#endif
> -
>  static inline void *create_canvas_for_surface(DisplayChannel *display, RedSurface *surface,
>                                                uint32_t renderer, uint32_t width, uint32_t height,
>                                                int32_t stride, uint32_t format, void *line_0)
> @@ -4234,18 +4177,6 @@ static inline void *create_canvas_for_surface(DisplayChannel *display, RedSurfac
>          surface->context.top_down = TRUE;
>          surface->context.canvas_draws_on_surface = TRUE;
>          return canvas;
> -#ifdef USE_OPENGL
> -    case RED_RENDERER_OGL_PBUF:
> -        canvas = create_ogl_pbuf_context(display, width, height, stride,
> -                                         SPICE_SURFACE_FMT_DEPTH(format));
> -        surface->context.top_down = FALSE;
> -        return canvas;
> -    case RED_RENDERER_OGL_PIXMAP:
> -        canvas = create_ogl_pixmap_context(display, width, height, stride,
> -                                           SPICE_SURFACE_FMT_DEPTH(format));
> -        surface->context.top_down = FALSE;
> -        return canvas;
> -#endif
>      default:
>          spice_error("invalid renderer type");
>      };
> diff --git a/server/reds.c b/server/reds.c
> index 9bd28df..8b3c3cb 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -3374,10 +3374,6 @@ typedef struct RendererInfo {
>
>  static RendererInfo renderers_info[] = {
>      {RED_RENDERER_SW, "sw"},
> -#ifdef USE_OPENGL
> -    {RED_RENDERER_OGL_PBUF, "oglpbuf"},
> -    {RED_RENDERER_OGL_PIXMAP, "oglpixmap"},
> -#endif
>      {RED_RENDERER_INVALID, NULL},
>  };
>
> diff --git a/server/reds.h b/server/reds.h
> index 7937d2d..fcdc5eb 100644
> --- a/server/reds.h
> +++ b/server/reds.h
> @@ -62,8 +62,6 @@ void reds_handle_agent_mouse_event(const VDAgentMouseState *mouse_state); // use
>  enum {
>      RED_RENDERER_INVALID,
>      RED_RENDERER_SW,
> -    RED_RENDERER_OGL_PBUF,
> -    RED_RENDERER_OGL_PIXMAP,
>
>      RED_RENDERER_LAST
>  };
> diff --git a/server/reds_gl_canvas.c b/server/reds_gl_canvas.c
> deleted file mode 100644
> index 66694e7..0000000
> --- a/server/reds_gl_canvas.c
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -/*
> -   Copyright (C) 2011 Red Hat, Inc.
> -
> -   This library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   This library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with this library; if not, see <http://www.gnu.org/licenses/>.
> -*/
> -#ifdef HAVE_CONFIG_H
> -#include <config.h>
> -#endif
> -
> -#include "common/spice_common.h"
> -
> -#include "reds_gl_canvas.h"
> -#define SW_CANVAS_IMAGE_CACHE
> -#include "common/gl_canvas.c"
> -#undef SW_CANVAS_IMAGE_CACHE
> diff --git a/server/reds_gl_canvas.h b/server/reds_gl_canvas.h
> deleted file mode 100644
> index 5d49659..0000000
> --- a/server/reds_gl_canvas.h
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/*
> -   Copyright (C) 2011 Red Hat, Inc.
> -
> -   This library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   This library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with this library; if not, see <http://www.gnu.org/licenses/>.
> -*/
> -
> -#ifndef _H_REDS_GL_CANVAS
> -#define _H_REDS_GL_CANVAS
> -
> -#define SW_CANVAS_IMAGE_CACHE
> -#include "common/gl_canvas.h"
> -#undef SW_CANVAS_IMAGE_CACHE
> -
> -#endif
> --
> 2.4.3
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

ACK from me ...

-- 
Fabiano Fidêncio


More information about the Spice-devel mailing list