egl_g3d.h revision a924dd18c32bbc0056a799cf621dc2835644c16e
149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu/*
249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Mesa 3-D graphics library
349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Version:  7.8
449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu *
549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org>
649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu *
749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Permission is hereby granted, free of charge, to any person obtaining a
849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * copy of this software and associated documentation files (the "Software"),
949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * to deal in the Software without restriction, including without limitation
1049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * and/or sell copies of the Software, and to permit persons to whom the
1249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Software is furnished to do so, subject to the following conditions:
1349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu *
1449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * The above copyright notice and this permission notice shall be included
1549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * in all copies or substantial portions of the Software.
1649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu *
1749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
2049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
2149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
2249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */
2449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
2549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#ifndef _EGL_G3D_H_
2649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#define _EGL_G3D_H_
2749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
2849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_compiler.h"
2949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_screen.h"
3049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_context.h"
3149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_format.h"
3249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "egldriver.h"
3349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "egldisplay.h"
3449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "eglcontext.h"
3549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "eglsurface.h"
3649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "eglconfig.h"
379373447a614e7b401919328b589b5f2607e456fdChia-I Wu#include "eglimage.h"
382dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wu#include "eglscreen.h"
392dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wu#include "eglmode.h"
4049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
4149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "native.h"
42a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu#include "egl_g3d_st.h"
4349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
4449381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct egl_g3d_driver {
4549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   _EGLDriver base;
46a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct st_api *stapis[ST_API_COUNT];
4749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   EGLint api_mask;
48c8b694b2c2f451235270a3442254379caea3f57dChia-I Wu
49c8b694b2c2f451235270a3442254379caea3f57dChia-I Wu   EGLint probe_key;
5049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu};
5149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
5249381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct egl_g3d_display {
5349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   struct native_display *native;
5449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
55a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct st_manager *smapi;
5649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu};
5749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
5849381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct egl_g3d_context {
5949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   _EGLContext base;
6049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
61a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct st_api *stapi;
6249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
63a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct st_context_iface *stctxi;
6449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu};
6549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
6649381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct egl_g3d_surface {
6749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   _EGLSurface base;
68a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu
69a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct st_visual stvis;
70a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct st_framebuffer_iface *stfbi;
71a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu
7249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   struct native_surface *native;
73a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct pipe_texture *render_texture;
746cb89b23eeac50cfb0c5fb8d77e19f869b524eacChia-I Wu   unsigned int sequence_number;
7549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu};
7649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
7749381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct egl_g3d_config {
7849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   _EGLConfig base;
7949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu   const struct native_config *native;
80a924dd18c32bbc0056a799cf621dc2835644c16eChia-I Wu   struct st_visual stvis;
8149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu};
8249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
839373447a614e7b401919328b589b5f2607e456fdChia-I Wustruct egl_g3d_image {
849373447a614e7b401919328b589b5f2607e456fdChia-I Wu   _EGLImage base;
859373447a614e7b401919328b589b5f2607e456fdChia-I Wu   struct pipe_texture *texture;
869373447a614e7b401919328b589b5f2607e456fdChia-I Wu   unsigned face;
879373447a614e7b401919328b589b5f2607e456fdChia-I Wu   unsigned level;
889373447a614e7b401919328b589b5f2607e456fdChia-I Wu   unsigned zslice;
899373447a614e7b401919328b589b5f2607e456fdChia-I Wu};
909373447a614e7b401919328b589b5f2607e456fdChia-I Wu
912dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wustruct egl_g3d_screen {
922dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wu   _EGLScreen base;
932dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wu   const struct native_connector *native;
942dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wu   const struct native_mode **native_modes;
952dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wu};
9649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu
979a3de505dc5377a47a6ccb29fe60343feb2f5b14Chia-I Wu/* standard typecasts */
989a3de505dc5377a47a6ccb29fe60343feb2f5b14Chia-I Wu_EGL_DRIVER_STANDARD_TYPECASTS(egl_g3d)
999a3de505dc5377a47a6ccb29fe60343feb2f5b14Chia-I Wu_EGL_DRIVER_TYPECAST(egl_g3d_screen, _EGLScreen, obj)
1009373447a614e7b401919328b589b5f2607e456fdChia-I Wu_EGL_DRIVER_TYPECAST(egl_g3d_image, _EGLImage, obj)
1019373447a614e7b401919328b589b5f2607e456fdChia-I Wu
1029373447a614e7b401919328b589b5f2607e456fdChia-I Wu
1039373447a614e7b401919328b589b5f2607e456fdChia-I Wu_EGLConfig *
1049373447a614e7b401919328b589b5f2607e456fdChia-I Wuegl_g3d_find_pixmap_config(_EGLDisplay *dpy, EGLNativePixmapType pix);
1052dcdf19ee3a19fb41005d53f0dbc6e8a3970a8b6Chia-I Wu
10649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#endif /* _EGL_G3D_H_ */
107