1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/* 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * you may not use this file except in compliance with the License. 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * You may obtain a copy of the License at 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * See the License for the specific language governing permissions and 14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * limitations under the License. 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */ 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#ifndef ANDROID_PIXELFLINGER_H 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define ANDROID_PIXELFLINGER_H 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdint.h> 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <sys/types.h> 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <pixelflinger/format.h> 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// GGL types 26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int8_t GGLbyte; // b 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int16_t GGLshort; // s 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int32_t GGLint; // i 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef ssize_t GGLsizei; // i 31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int32_t GGLfixed; // x 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int32_t GGLclampx; // x 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef float GGLfloat; // f 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef float GGLclampf; // f 35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef double GGLdouble; // d 36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef double GGLclampd; // d 37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef uint8_t GGLubyte; // ub 38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef uint8_t GGLboolean; // ub 39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef uint16_t GGLushort; // us 40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef uint32_t GGLuint; // ui 41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef unsigned int GGLenum; // ui 42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef unsigned int GGLbitfield; // ui 43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef void GGLvoid; 44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int32_t GGLfixed32; 45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int32_t GGLcolor; 46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef int32_t GGLcoord; 47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------- 49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define GGL_MAX_VIEWPORT_DIMS 4096 51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define GGL_MAX_TEXTURE_SIZE 4096 52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define GGL_MAX_ALIASED_POINT_SIZE 0x7FFFFFF 53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define GGL_MAX_SMOOTH_POINT_SIZE 2048 54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define GGL_MAX_SMOOTH_LINE_WIDTH 2048 55dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 56dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------- 57dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 58dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// All these names are compatible with their OpenGL equivalents 59dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// some of them are listed only for completeness 60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectenum GGLNames { 61dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_FALSE = 0, 62dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TRUE = 1, 63dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 64dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // enable/disable 65dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_SCISSOR_TEST = 0x0C11, 66dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_2D = 0x0DE1, 67dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ALPHA_TEST = 0x0BC0, 68dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_BLEND = 0x0BE2, 69dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_COLOR_LOGIC_OP = 0x0BF2, 70dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_DITHER = 0x0BD0, 71dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_STENCIL_TEST = 0x0B90, 72dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_DEPTH_TEST = 0x0B71, 73dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_AA = 0x80000001, 74dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_W_LERP = 0x80000004, 75dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_POINT_SMOOTH_NICE = 0x80000005, 76dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 77dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // buffers, pixel drawing/reading 78dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_COLOR = 0x1800, 79dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 80dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // fog 81dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_FOG = 0x0B60, 82dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 83dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // shade model 84dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_FLAT = 0x1D00, 85dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_SMOOTH = 0x1D01, 86dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 87dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Texture parameter name 88dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_MIN_FILTER = 0x2801, 89dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_MAG_FILTER = 0x2800, 90dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_WRAP_S = 0x2802, 91dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_WRAP_T = 0x2803, 92dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_WRAP_R = 0x2804, 93dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 94dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Texture Filter 95dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NEAREST = 0x2600, 96dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_LINEAR = 0x2601, 97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NEAREST_MIPMAP_NEAREST = 0x2700, 98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_LINEAR_MIPMAP_NEAREST = 0x2701, 99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NEAREST_MIPMAP_LINEAR = 0x2702, 100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_LINEAR_MIPMAP_LINEAR = 0x2703, 101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Texture Wrap Mode 103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_CLAMP = 0x2900, 104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_REPEAT = 0x2901, 105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_CLAMP_TO_EDGE = 0x812F, 106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Texture Env Mode 108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_REPLACE = 0x1E01, 109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_MODULATE = 0x2100, 110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_DECAL = 0x2101, 111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ADD = 0x0104, 112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Texture Env Parameter 114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_ENV_MODE = 0x2200, 115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_ENV_COLOR = 0x2201, 116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Texture Env Target 118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_ENV = 0x2300, 119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Texture coord generation 121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_TEXTURE_GEN_MODE = 0x2500, 122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_S = 0x2000, 123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_T = 0x2001, 124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_R = 0x2002, 125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_Q = 0x2003, 126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ONE_TO_ONE = 0x80000002, 127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_AUTOMATIC = 0x80000003, 128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 129dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // AlphaFunction 130dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NEVER = 0x0200, 131dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_LESS = 0x0201, 132dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_EQUAL = 0x0202, 133dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_LEQUAL = 0x0203, 134dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_GREATER = 0x0204, 135dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NOTEQUAL = 0x0205, 136dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_GEQUAL = 0x0206, 137dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ALWAYS = 0x0207, 138dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 139dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // LogicOp 140dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_CLEAR = 0x1500, // 0 141dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_AND = 0x1501, // s & d 142dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_AND_REVERSE = 0x1502, // s & ~d 143dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_COPY = 0x1503, // s 144dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_AND_INVERTED = 0x1504, // ~s & d 145dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NOOP = 0x1505, // d 146dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_XOR = 0x1506, // s ^ d 147dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_OR = 0x1507, // s | d 148dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NOR = 0x1508, // ~(s | d) 149dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_EQUIV = 0x1509, // ~(s ^ d) 150dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_INVERT = 0x150A, // ~d 151dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_OR_REVERSE = 0x150B, // s | ~d 152dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_COPY_INVERTED = 0x150C, // ~s 153dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_OR_INVERTED = 0x150D, // ~s | d 154dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NAND = 0x150E, // ~(s & d) 155dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_SET = 0x150F, // 1 156dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 157dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // blending equation & function 158dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ZERO = 0, // SD 159dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ONE = 1, // SD 160dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_SRC_COLOR = 0x0300, // D 161dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ONE_MINUS_SRC_COLOR = 0x0301, // D 162dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_SRC_ALPHA = 0x0302, // SD 163dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ONE_MINUS_SRC_ALPHA = 0x0303, // SD 164dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_DST_ALPHA = 0x0304, // SD 165dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ONE_MINUS_DST_ALPHA = 0x0305, // SD 166dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_DST_COLOR = 0x0306, // S 167dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_ONE_MINUS_DST_COLOR = 0x0307, // S 168dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_SRC_ALPHA_SATURATE = 0x0308, // S 169dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 170dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // clear bits 171dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_DEPTH_BUFFER_BIT = 0x00000100, 172dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_STENCIL_BUFFER_BIT = 0x00000400, 173dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_COLOR_BUFFER_BIT = 0x00004000, 174dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 175dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // errors 176dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_NO_ERROR = 0, 177dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_INVALID_ENUM = 0x0500, 178dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_INVALID_VALUE = 0x0501, 179dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_INVALID_OPERATION = 0x0502, 180dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_STACK_OVERFLOW = 0x0503, 181dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_STACK_UNDERFLOW = 0x0504, 182dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGL_OUT_OF_MEMORY = 0x0505 183dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; 184dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 185dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------- 186dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 187dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef struct { 188dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLsizei version; // always set to sizeof(GGLSurface) 189dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLuint width; // width in pixels 190dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLuint height; // height in pixels 191dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLint stride; // stride in pixels 192dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLubyte* data; // pointer to the bits 193dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLubyte format; // pixel format 194dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLubyte rfu[3]; // must be zero 195dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // these values are dependent on the used format 196dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project union { 197dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLint compressedFormat; 198dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLint vstride; 199dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project }; 200dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void* reserved; 201dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project} GGLSurface; 202dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 203dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 204dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef struct { 205dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // immediate rendering 206dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*pointx)(void *con, const GGLcoord* v, GGLcoord r); 207dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*linex)(void *con, 208dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project const GGLcoord* v0, const GGLcoord* v1, GGLcoord width); 209dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*recti)(void* c, GGLint l, GGLint t, GGLint r, GGLint b); 210dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*trianglex)(void* c, 211dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLcoord const* v0, GGLcoord const* v1, GGLcoord const* v2); 212dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 213dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // scissor 214dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*scissor)(void* c, GGLint x, GGLint y, GGLsizei width, GGLsizei height); 215dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 216dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // Set the textures and color buffers 217dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*activeTexture)(void* c, GGLuint tmu); 218dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*bindTexture)(void* c, const GGLSurface* surface); 219dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*colorBuffer)(void* c, const GGLSurface* surface); 220dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*readBuffer)(void* c, const GGLSurface* surface); 221dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*depthBuffer)(void* c, const GGLSurface* surface); 222dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*bindTextureLod)(void* c, GGLuint tmu, const GGLSurface* surface); 223dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 224dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // enable/disable features 225dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*enable)(void* c, GGLenum name); 226dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*disable)(void* c, GGLenum name); 227dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*enableDisable)(void* c, GGLenum name, GGLboolean en); 228dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 229dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // specify the fragment's color 230dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*shadeModel)(void* c, GGLenum mode); 231dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*color4xv)(void* c, const GGLclampx* color); 232dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // specify color iterators (16.16) 233dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*colorGrad12xv)(void* c, const GGLcolor* grad); 234dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 235dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // specify Z coordinate iterators (0.32) 236dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*zGrad3xv)(void* c, const GGLfixed32* grad); 237dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 238dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // specify W coordinate iterators (16.16) 239dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*wGrad3xv)(void* c, const GGLfixed* grad); 240dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 241dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // specify fog iterator & color (16.16) 242dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*fogGrad3xv)(void* c, const GGLfixed* grad); 243dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*fogColor3xv)(void* c, const GGLclampx* color); 244dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 245dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // specify blending parameters 246dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*blendFunc)(void* c, GGLenum src, GGLenum dst); 247dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*blendFuncSeparate)(void* c, GGLenum src, GGLenum dst, 248dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLenum srcAlpha, GGLenum dstAplha); 249dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 250dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // texture environnement (REPLACE / MODULATE / DECAL / BLEND) 251dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*texEnvi)(void* c, GGLenum target, 252dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLenum pname, 253dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLint param); 254dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 255dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*texEnvxv)(void* c, GGLenum target, 256dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLenum pname, const GGLfixed* params); 257dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 258dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // texture parameters (Wrapping, filter) 259dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*texParameteri)(void* c, GGLenum target, 260dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLenum pname, 261dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLint param); 262dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 263dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // texture iterators (16.16) 264dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*texCoord2i)(void* c, GGLint s, GGLint t); 265dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*texCoord2x)(void* c, GGLfixed s, GGLfixed t); 266dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 267dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // s, dsdx, dsdy, scale, t, dtdx, dtdy, tscale 268dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // This api uses block floating-point for S and T texture coordinates. 269dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // All values are given in 16.16, scaled by 'scale'. In other words, 270dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // set scale to 0, for 16.16 values. 271dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*texCoordGradScale8xv)(void* c, GGLint tmu, const int32_t* grad8); 272dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 273dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*texGeni)(void* c, GGLenum coord, GGLenum pname, GGLint param); 274dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 275dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // masking 276dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*colorMask)(void* c, GGLboolean red, 277dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLboolean green, 278dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLboolean blue, 279dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLboolean alpha); 280dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 281dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*depthMask)(void* c, GGLboolean flag); 282dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 283dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*stencilMask)(void* c, GGLuint mask); 284dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 285dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // alpha func 286dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*alphaFuncx)(void* c, GGLenum func, GGLclampx ref); 287dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 288dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // depth func 289dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*depthFunc)(void* c, GGLenum func); 290dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 291dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // logic op 292dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*logicOp)(void* c, GGLenum opcode); 293dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 294dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // clear 295dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*clear)(void* c, GGLbitfield mask); 296dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*clearColorx)(void* c, 297dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLclampx r, GGLclampx g, GGLclampx b, GGLclampx a); 298dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*clearDepthx)(void* c, GGLclampx depth); 299dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*clearStencil)(void* c, GGLint s); 300dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 301dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // framebuffer operations 302dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*copyPixels)(void* c, GGLint x, GGLint y, 303dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLsizei width, GGLsizei height, GGLenum type); 304dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*rasterPos2x)(void* c, GGLfixed x, GGLfixed y); 305dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void (*rasterPos2i)(void* c, GGLint x, GGLint y); 306dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project} GGLContext; 307dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 308dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------- 309dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 310dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#ifdef __cplusplus 311dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectextern "C" { 312dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif 313dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 314dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// construct / destroy the context 315dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t gglInit(GGLContext** context); 316dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t gglUninit(GGLContext* context); 317dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 318dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectGGLint gglBitBlti( 319dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLContext* c, 320dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int tmu, 321dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLint crop[4], 322dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project GGLint where[4]); 323dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 324dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#ifdef __cplusplus 325dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; 326dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif 327dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 328dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------- 329dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 330dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif // ANDROID_PIXELFLINGER_H 331