15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Shaders from Chromium and an interface for setting them up 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef GPU_TOOLS_COMPOSITOR_MODEL_BENCH_SHADERS_H_ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GPU_TOOLS_COMPOSITOR_MODEL_BENCH_SHADERS_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Forward declarations. 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CCNode; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentLayerNode; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned int GLuint; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum ShaderID { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SHADER_UNRECOGNIZED = 0, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VERTEX_SHADER_POS_TEX_YUV_STRETCH, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VERTEX_SHADER_POS_TEX, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VERTEX_SHADER_POS_TEX_TRANSFORM, 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRAGMENT_SHADER_YUV_VIDEO, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRAGMENT_SHADER_RGBA_TEX_FLIP_ALPHA, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRAGMENT_SHADER_RGBA_TEX_ALPHA, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SHADER_ID_MAX 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShaderID ShaderIDFromString(std::string name); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ShaderNameFromID(ShaderID id); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ConfigAndActivateShaderForNode(CCNode* n); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Call once to set up the parameters for an entire tiled layer, then use 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DrawTileQuad for each tile to be drawn. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ConfigAndActivateShaderForTiling(ContentLayerNode* n); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// One-off function to set up global VBO's that will be used every time 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// we want to draw a quad. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InitBuffers(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Per-frame initialization of the VBO's (to replicate behavior in Chrome.) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BeginFrame(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Draw the quad in those VBO's. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DrawQuad(float width, float height); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Draw the quad in those VBO's for an individual tile within a tiled layer. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// x and y give the 2D index of the tile. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DrawTileQuad(GLuint texID, int x, int y); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // GPU_TOOLS_COMPOSITOR_MODEL_BENCH_SHADERS_H_ 53