Home | History | Annotate | Download | only in compositor_model_bench
      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.
     13 class CCNode;
     14 class ContentLayerNode;
     15 
     16 typedef unsigned int GLuint;
     17 
     18 enum 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 
     29 ShaderID ShaderIDFromString(std::string name);
     30 std::string ShaderNameFromID(ShaderID id);
     31 
     32 void 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.
     36 void 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.
     40 void InitBuffers();
     41 
     42 // Per-frame initialization of the VBO's (to replicate behavior in Chrome.)
     43 void BeginFrame();
     44 
     45 // Draw the quad in those VBO's.
     46 void 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.
     50 void DrawTileQuad(GLuint texID, int x, int y);
     51 
     52 #endif  // GPU_TOOLS_COMPOSITOR_MODEL_BENCH_SHADERS_H_
     53