1/* Copyright (C) 2011 The Android Open Source Project
2**
3** This software is licensed under the terms of the GNU General Public
4** License version 2, as published by the Free Software Foundation, and
5** may be copied, distributed, and modified under those terms.
6**
7** This program is distributed in the hope that it will be useful,
8** but WITHOUT ANY WARRANTY; without even the implied warranty of
9** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10** GNU General Public License for more details.
11*/
12#ifndef ANDROID_OPENGLES_H
13#define ANDROID_OPENGLES_H
14
15#include <stddef.h>
16
17/* Call this function to initialize the hardware opengles emulation.
18 * This function will abort if we can't find the corresponding host
19 * libraries through dlopen() or equivalent.
20 */
21int android_initOpenglesEmulation(void);
22
23/* Tries to start the renderer process. Returns 0 on success, -1 on error.
24 * At the moment, this must be done before the VM starts. The onPost callback
25 * may be NULL.
26 */
27int android_startOpenglesRenderer(int width, int height);
28
29/* See the description in render_api.h. */
30typedef void (*OnPostFunc)(void* context, int width, int height, int ydir,
31                           int format, int type, unsigned char* pixels);
32void android_setPostCallback(OnPostFunc onPost, void* onPostContext);
33
34/* Retrieve the Vendor/Renderer/Version strings describing the underlying GL
35 * implementation. The call only works while the renderer is started.
36 *
37 * Each string is copied into the corresponding buffer. If the original string
38 * (including NUL terminator) is more than xxBufSize bytes, it will be
39 * truncated. In all cases, including failure, the buffer will be NUL-
40 * terminated when this function returns.
41 */
42void android_getOpenglesHardwareStrings(char* vendor, size_t vendorBufSize,
43                                        char* renderer, size_t rendererBufSize,
44                                        char* version, size_t versionBufSize);
45
46int android_showOpenglesWindow(void* window, int x, int y, int width, int height, float rotation);
47
48int android_hideOpenglesWindow(void);
49
50void android_redrawOpenglesWindow(void);
51
52/* Stop the renderer process */
53void android_stopOpenglesRenderer(void);
54
55/* set to TRUE if you want to use fast GLES pipes, 0 if you want to
56 * fallback to local TCP ones
57 */
58extern int  android_gles_fast_pipes;
59
60/* Get the address of the socket that clients should connect to to access GLES.
61 * For TCP this is just the port number (as a string) on the loopback address.
62 * For UNIX and Win32 pipes it is the full pathname of the pipe.
63 */
64void android_gles_server_path(char* buff, size_t buffsize);
65
66#endif /* ANDROID_OPENGLES_H */
67