shaders.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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