1f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu/************************************************************************** 2f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * 3f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. 4f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com> 5f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * Copyright 2010 LunarG, Inc. 6f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * All Rights Reserved. 7f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * 8f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * Permission is hereby granted, free of charge, to any person obtaining a 9f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * copy of this software and associated documentation files (the 10f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * "Software"), to deal in the Software without restriction, including 11f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * without limitation the rights to use, copy, modify, merge, publish, 12f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * distribute, sub license, and/or sell copies of the Software, and to 13f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * permit persons to whom the Software is furnished to do so, subject to 14f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * the following conditions: 15f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * 16f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * The above copyright notice and this permission notice (including the 17f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * next paragraph) shall be included in all copies or substantial portions 18f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * of the Software. 19f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * 20f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 26f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * DEALINGS IN THE SOFTWARE. 27f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * 28f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu **************************************************************************/ 29f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu 30f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu 31adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#ifndef EGLSCREEN_INCLUDED 32adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#define EGLSCREEN_INCLUDED 33adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 34adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 3594cb321b5d246185abf71d89968d472a626f1a23Chia-I Wu#include "egltypedefs.h" 3694cb321b5d246185abf71d89968d472a626f1a23Chia-I Wu 3794cb321b5d246185abf71d89968d472a626f1a23Chia-I Wu 386c7e0b95a4a16d268aa3ca74c5c8407779533314Chia-I Wu#ifdef EGL_MESA_screen_surface 396c7e0b95a4a16d268aa3ca74c5c8407779533314Chia-I Wu 406c7e0b95a4a16d268aa3ca74c5c8407779533314Chia-I Wu 41e32ac5b8a963202dcdfb91354f77979765083000Chia-I Wu#define _EGL_SCREEN_MAX_MODES 16 42e32ac5b8a963202dcdfb91354f77979765083000Chia-I Wu 43e32ac5b8a963202dcdfb91354f77979765083000Chia-I Wu 44d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul/** 45d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul * Per-screen information. 46d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul * Note that an EGL screen doesn't have a size. A screen may be set to 47d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul * one of several display modes (width/height/scanrate). The screen 48d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul * then displays a drawing surface. The drawing surface must be at least 49d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul * as large as the display mode's resolution. If it's larger, the 50d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul * OriginX and OriginY fields control what part of the surface is visible 51d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul * on the screen. 52d548bf41d3a0fe443494f94f745d1fe49e5e432cBrian Paul */ 53adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulstruct _egl_screen 54adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul{ 5537213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu _EGLDisplay *Display; 5637213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu 57c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul EGLScreenMESA Handle; /* The public/opaque handle which names this object */ 58c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul 59adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul _EGLMode *CurrentMode; 60adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul _EGLSurface *CurrentSurface; 61b04dd5c58763039a564c50b5e3c0bbc9755e7f72Brian Paul 62b04dd5c58763039a564c50b5e3c0bbc9755e7f72Brian Paul EGLint OriginX, OriginY; /**< Origin of scan-out region w.r.t. surface */ 63b04dd5c58763039a564c50b5e3c0bbc9755e7f72Brian Paul EGLint StepX, StepY; /**< Screen position/origin granularity */ 64adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 65adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul EGLint NumModes; 66b04dd5c58763039a564c50b5e3c0bbc9755e7f72Brian Paul _EGLMode *Modes; /**< array [NumModes] */ 67adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul}; 68adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 69adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 70897cb8950ae14ffe7029b1daf16113ff62ce0dfeChia-I WuPUBLIC void 71e32ac5b8a963202dcdfb91354f77979765083000Chia-I Wu_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes); 7237213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu 7337213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu 7437213ceacc2d7b309de7641da501282f8f24c8c2Chia-I WuPUBLIC EGLScreenMESA 7537213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu_eglLinkScreen(_EGLScreen *screen); 76c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul 77c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul 78c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paulextern _EGLScreen * 792f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *dpy); 80c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul 81c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul 8237213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu/** 8337213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu * Return the handle of a linked screen. 8437213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu */ 8537213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wustatic INLINE EGLScreenMESA 8637213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu_eglGetScreenHandle(_EGLScreen *screen) 8737213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu{ 8837213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu return (screen) ? screen->Handle : (EGLScreenMESA) 0; 8937213ceacc2d7b309de7641da501282f8f24c8c2Chia-I Wu} 90c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul 91c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul 92c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paulextern EGLBoolean 932f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens); 94adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 95adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 96adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean 972f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglScreenPositionMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint x, EGLint y); 98adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 99adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 100adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean 1012f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglQueryScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy, 1022f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu _EGLScreen *scrn, _EGLSurface **surface); 103adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 104adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 105adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean 1062f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglQueryScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLMode **m); 107adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 108adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 109adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean 1102f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint attribute, EGLint *value); 111adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 112adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul 1136c7e0b95a4a16d268aa3ca74c5c8407779533314Chia-I Wu#endif /* EGL_MESA_screen_surface */ 1146c7e0b95a4a16d268aa3ca74c5c8407779533314Chia-I Wu 1156c7e0b95a4a16d268aa3ca74c5c8407779533314Chia-I Wu 116adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#endif /* EGLSCREEN_INCLUDED */ 117