1 //
2 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // Contants.h: Defines some implementation specific and gl constants
8 
9 #ifndef LIBANGLE_CONSTANTS_H_
10 #define LIBANGLE_CONSTANTS_H_
11 
12 #include "common/platform.h"
13 
14 namespace gl
15 {
16 
17 // The binary cache is currently left disable by default, and the application can enable it.
18 const size_t kDefaultMaxProgramCacheMemoryBytes = 0;
19 
20 enum
21 {
22     // Implementation upper limits, real maximums depend on the hardware
23     MAX_SAMPLE_MASK_WORDS = 2,
24 
25     MAX_VERTEX_ATTRIBS         = 16,
26     MAX_VERTEX_ATTRIB_BINDINGS = 16,
27 
28     // Implementation upper limits, real maximums depend on the hardware
29     IMPLEMENTATION_MAX_VARYING_VECTORS = 32,
30     IMPLEMENTATION_MAX_DRAW_BUFFERS    = 8,
31     IMPLEMENTATION_MAX_FRAMEBUFFER_ATTACHMENTS =
32         IMPLEMENTATION_MAX_DRAW_BUFFERS + 2,  // 2 extra for depth and/or stencil buffers
33 
34     IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS   = 16,
35     IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS = 16,
36     IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS =
37         IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS +
38         IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS,
39 
40     IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_BUFFERS = 4,
41 
42     // Maximum number of views which are supported by the implementation of ANGLE_multiview.
43     IMPLEMENTATION_ANGLE_MULTIVIEW_MAX_VIEWS = 4,
44 
45     // These are the maximums the implementation can support
46     // The actual GL caps are limited by the device caps
47     // and should be queried from the Context
48     IMPLEMENTATION_MAX_2D_TEXTURE_SIZE         = 16384,
49     IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE   = 16384,
50     IMPLEMENTATION_MAX_3D_TEXTURE_SIZE         = 2048,
51     IMPLEMENTATION_MAX_2D_ARRAY_TEXTURE_LAYERS = 2048,
52 
53     // 1+log2 of max of MAX_*_TEXTURE_SIZE
54     IMPLEMENTATION_MAX_TEXTURE_LEVELS = 15,
55 
56     // Limit active textures so we can use fast bitsets.
57     IMPLEMENTATION_MAX_SHADER_TEXTURES = 32,
58     IMPLEMENTATION_MAX_ACTIVE_TEXTURES = IMPLEMENTATION_MAX_SHADER_TEXTURES * 2,
59 };
60 }
61 
62 #endif // LIBANGLE_CONSTANTS_H_
63