1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Shaders from Chromium and an interface for setting them up 6 7#ifndef GPU_TOOLS_COMPOSITOR_MODEL_BENCH_SHADERS_H_ 8#define GPU_TOOLS_COMPOSITOR_MODEL_BENCH_SHADERS_H_ 9 10#include <string> 11 12// Forward declarations. 13class CCNode; 14class ContentLayerNode; 15 16typedef unsigned int GLuint; 17 18enum ShaderID { 19 SHADER_UNRECOGNIZED = 0, 20 VERTEX_SHADER_POS_TEX_YUV_STRETCH, 21 VERTEX_SHADER_POS_TEX, 22 VERTEX_SHADER_POS_TEX_TRANSFORM, 23 FRAGMENT_SHADER_YUV_VIDEO, 24 FRAGMENT_SHADER_RGBA_TEX_FLIP_ALPHA, 25 FRAGMENT_SHADER_RGBA_TEX_ALPHA, 26 SHADER_ID_MAX 27}; 28 29ShaderID ShaderIDFromString(std::string name); 30std::string ShaderNameFromID(ShaderID id); 31 32void ConfigAndActivateShaderForNode(CCNode* n); 33 34// Call once to set up the parameters for an entire tiled layer, then use 35// DrawTileQuad for each tile to be drawn. 36void ConfigAndActivateShaderForTiling(ContentLayerNode* n); 37 38// One-off function to set up global VBO's that will be used every time 39// we want to draw a quad. 40void InitBuffers(); 41 42// Per-frame initialization of the VBO's (to replicate behavior in Chrome.) 43void BeginFrame(); 44 45// Draw the quad in those VBO's. 46void DrawQuad(float width, float height); 47 48// Draw the quad in those VBO's for an individual tile within a tiled layer. 49// x and y give the 2D index of the tile. 50void DrawTileQuad(GLuint texID, int x, int y); 51 52#endif // GPU_TOOLS_COMPOSITOR_MODEL_BENCH_SHADERS_H_ 53