1
0
Fork 0
mutter-performance-source/cogl/cogl-display.h
Robert Bragg 7037812ae6 EGL: Updates GDL platform support
The GDL API is used for example on intel ce4100 (aka Sodaville) based
systems as a way to allocate memory that can be composited using the
platforms overlay hardware. This updates the Cogl EGL winsys and the
support in Clutter so we can continue to support these platforms.
2011-05-05 14:46:02 +01:00

100 lines
3.3 KiB
C

/*
* Cogl
*
* An object oriented GL/GLES Abstraction/Utility Layer
*
* Copyright (C) 2010 Intel Corporation.
*
* 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 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/>.
*
* Authors:
* Robert Bragg <robert@linux.intel.com>
*
*/
#if !defined(__COGL_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
#error "Only <cogl/cogl.h> can be included directly."
#endif
#ifndef __COGL_DISPLAY_H__
#define __COGL_DISPLAY_H__
#include <cogl/cogl-renderer.h>
#include <cogl/cogl-onscreen-template.h>
G_BEGIN_DECLS
#ifdef COGL_HAS_EGL_PLATFORM_GDL_SUPPORT
#include <@CLUTTER_CEX100_LIBGDL_PREFIX@libgdl.h>
#endif
/**
* SECTION:cogl-display
* @short_description: Represents a display pipeline
*
* TODO: We still need to decide if we really need this object or if
* it's enough to just have the CoglSwapChain CoglOnscreenTemplate
* objects.
*
* The basic intention is for this object to let the application
* specify its display preferences before creating a context, and
* there are a few different aspects to this...
*
* Firstly there is the physical display pipeline that is currently
* being used including the digital to analogue conversion hardware
* and the screen the user sees. Although we don't have a plan to
* expose all the advanced features of arbitrary display hardware with
* a Cogl API, some backends may want to expose limited control over
* this hardware via Cogl and simpler features like providing a list
* of modes to choose from in a UI could be nice too.
*
* Another aspect is that the display configuration may be tightly
* related to how onscreen framebuffers should be configured. In fact
* one of the early rationals for this object was to let us handle
* GLX's requirement that framebuffers must be "compatible" with the
* fbconfig associated with the current context meaning we have to
* force the user to describe how they would like to create their
* onscreen windows before we can choose a suitable fbconfig and
* create a GLContext.
*
* TODO: continue this thought process and come to a decision...
*/
typedef struct _CoglDisplay CoglDisplay;
#define COGL_DISPLAY(OBJECT) ((CoglDisplay *)OBJECT)
#define cogl_display_new cogl_display_new_EXP
CoglDisplay *
cogl_display_new (CoglRenderer *renderer,
CoglOnscreenTemplate *onscreen_template);
#define cogl_display_setup cogl_display_setup_EXP
gboolean
cogl_display_setup (CoglDisplay *display,
GError **error);
#ifdef COGL_HAS_EGL_PLATFORM_GDL_SUPPORT
#define cogl_gdl_display_set_plane \
cogl_gdl_display_set_plane_EXP
void
cogl_gdl_display_set_plane (CoglDisplay *display,
struct gdl_plane *plane);
#endif
G_END_DECLS
#endif /* __COGL_DISPLAY_H__ */