/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_HWUI_DRAW_GL_INFO_H #define ANDROID_HWUI_DRAW_GL_INFO_H namespace android { namespace uirenderer { /** * Structure used by OpenGLRenderer::callDrawGLFunction() to pass and * receive data from OpenGL functors. */ struct DrawGlInfo { // Input: current clip rect int clipLeft; int clipTop; int clipRight; int clipBottom; // Input: current width/height of destination surface int width; int height; // Input: is the render target an FBO bool isLayer; // Input: current transform matrix, in OpenGL format float transform[16]; // Output: dirty region to redraw float dirtyLeft; float dirtyTop; float dirtyRight; float dirtyBottom; /** * Values used as the "what" parameter of the functor. */ enum Mode { // Indicates that the functor is called to perform a draw kModeDraw, // Indicates the the functor is called only to perform // processing and that no draw should be attempted kModeProcess, // Same as kModeProcess, however there is no GL context because it was // lost or destroyed kModeProcessNoContext, // Invoked every time the UI thread pushes over a frame to the render thread // *and the owning view has a dirty display list*. This is a signal to sync // any data that needs to be shared between the UI thread and the render thread. // During this time the UI thread is blocked. kModeSync }; /** * Values used by OpenGL functors to tell the framework * what to do next. */ enum Status { // The functor is done kStatusDone = 0x0, // DisplayList actually issued GL drawing commands. // This is used to signal the HardwareRenderer that the // buffers should be flipped - otherwise, there were no // changes to the buffer, so no need to flip. Some hardware // has issues with stale buffer contents when no GL // commands are issued. kStatusDrew = 0x4 }; }; // struct DrawGlInfo }; // namespace uirenderer }; // namespace android #endif // ANDROID_HWUI_DRAW_GL_INFO_H