Bumping manifests a=b2g-bump
[gecko.git] / dom / canvas / WebGLUniformInfo.h
blob602fd5312b71539eec0dbb7d7437b791ebc50b58
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef WEBGLUNIFORMINFO_H_
7 #define WEBGLUNIFORMINFO_H_
9 #include "GLDefs.h"
10 #include "angle/ShaderLang.h"
12 namespace mozilla {
14 struct WebGLUniformInfo {
15 uint32_t arraySize;
16 bool isArray;
17 sh::GLenum type;
19 explicit WebGLUniformInfo(uint32_t s = 0, bool a = false, sh::GLenum t = LOCAL_GL_NONE)
20 : arraySize(s), isArray(a), type(t) {}
22 int ElementSize() const {
23 switch (type) {
24 case LOCAL_GL_FLOAT:
25 case LOCAL_GL_INT:
26 case LOCAL_GL_UNSIGNED_INT:
27 case LOCAL_GL_BOOL:
28 case LOCAL_GL_SAMPLER_2D:
29 case LOCAL_GL_SAMPLER_3D:
30 case LOCAL_GL_SAMPLER_CUBE:
31 case LOCAL_GL_SAMPLER_2D_SHADOW:
32 case LOCAL_GL_SAMPLER_2D_ARRAY:
33 case LOCAL_GL_SAMPLER_2D_ARRAY_SHADOW:
34 case LOCAL_GL_SAMPLER_CUBE_SHADOW:
35 case LOCAL_GL_INT_SAMPLER_2D:
36 case LOCAL_GL_INT_SAMPLER_3D:
37 case LOCAL_GL_INT_SAMPLER_CUBE:
38 case LOCAL_GL_INT_SAMPLER_2D_ARRAY:
39 case LOCAL_GL_UNSIGNED_INT_SAMPLER_2D:
40 case LOCAL_GL_UNSIGNED_INT_SAMPLER_3D:
41 case LOCAL_GL_UNSIGNED_INT_SAMPLER_CUBE:
42 case LOCAL_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:
43 return 1;
44 case LOCAL_GL_FLOAT_VEC2:
45 case LOCAL_GL_INT_VEC2:
46 case LOCAL_GL_UNSIGNED_INT_VEC2:
47 case LOCAL_GL_BOOL_VEC2:
48 return 2;
49 case LOCAL_GL_FLOAT_VEC3:
50 case LOCAL_GL_INT_VEC3:
51 case LOCAL_GL_UNSIGNED_INT_VEC3:
52 case LOCAL_GL_BOOL_VEC3:
53 return 3;
54 case LOCAL_GL_FLOAT_VEC4:
55 case LOCAL_GL_INT_VEC4:
56 case LOCAL_GL_UNSIGNED_INT_VEC4:
57 case LOCAL_GL_BOOL_VEC4:
58 case LOCAL_GL_FLOAT_MAT2:
59 return 4;
60 case LOCAL_GL_FLOAT_MAT2x3:
61 case LOCAL_GL_FLOAT_MAT3x2:
62 return 6;
63 case LOCAL_GL_FLOAT_MAT2x4:
64 case LOCAL_GL_FLOAT_MAT4x2:
65 return 8;
66 case LOCAL_GL_FLOAT_MAT3:
67 return 9;
68 case LOCAL_GL_FLOAT_MAT3x4:
69 case LOCAL_GL_FLOAT_MAT4x3:
70 return 12;
71 case LOCAL_GL_FLOAT_MAT4:
72 return 16;
73 default:
74 MOZ_ASSERT(false); // should never get here
75 return 0;
80 } // namespace mozilla
82 #endif