19c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis/* 29c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * Copyright (C) 2012 The Android Open Source Project 39c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * 49c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * Licensed under the Apache License, Version 2.0 (the "License"); 59c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * you may not use this file except in compliance with the License. 69c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * You may obtain a copy of the License at 79c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * 89c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * http://www.apache.org/licenses/LICENSE-2.0 99c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * 109c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * Unless required by applicable law or agreed to in writing, software 119c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * distributed under the License is distributed on an "AS IS" BASIS, 129c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * See the License for the specific language governing permissions and 149c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis * limitations under the License. 159c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis */ 169c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 179c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis#include <stdint.h> 189c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 199c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis#include <EGL/egl.h> 209c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis#include <GLES2/gl2.h> 219c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 229c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis#include <gui/GLConsumer.h> 239c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 249c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisnamespace android { 259c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 269c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis#define NELEMS(x) ((int) (sizeof(x) / sizeof((x)[0]))) 279c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 289c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisenum { MAX_NUM_LAYERS = 16 }; 299c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisenum { MAX_TEST_RUNS = 16 }; 309c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 319c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisclass Composer; 329c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisclass Renderer; 339c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisclass GLHelper; 349c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 359c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisstruct LayerDesc { 369c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis uint32_t flags; 379c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis Renderer* (*rendererFactory)(); 389c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis Composer* (*composerFactory)(); 399c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis int32_t x; 409c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis int32_t y; 419c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis uint32_t width; 429c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis uint32_t height; 439c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis}; 449c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 459c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisvoid resetColorGenerator(); 469c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 479c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisclass Composer { 489c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennispublic: 499c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual ~Composer() {} 509c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual bool setUp(const LayerDesc& desc, GLHelper* helper) = 0; 519c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual void tearDown() = 0; 529c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual bool compose(GLuint texName, const sp<GLConsumer>& glc) = 0; 539c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis}; 549c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 559c183f2493222000fa512d927cfde3f4c748eda0Jamie GennisComposer* nocomp(); 569c183f2493222000fa512d927cfde3f4c748eda0Jamie GennisComposer* opaque(); 579c183f2493222000fa512d927cfde3f4c748eda0Jamie GennisComposer* opaqueShrink(); 589c183f2493222000fa512d927cfde3f4c748eda0Jamie GennisComposer* blend(); 599c183f2493222000fa512d927cfde3f4c748eda0Jamie GennisComposer* blendShrink(); 609c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 619c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennisclass Renderer { 629c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennispublic: 639c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual ~Renderer() {} 649c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual bool setUp(GLHelper* helper) = 0; 659c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual void tearDown() = 0; 669c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis virtual bool render(EGLSurface surface) = 0; 679c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis}; 689c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 699c183f2493222000fa512d927cfde3f4c748eda0Jamie GennisRenderer* staticGradient(); 709c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis 719c183f2493222000fa512d927cfde3f4c748eda0Jamie Gennis} // namespace android 72