/src/mozilla-central/dom/canvas/WebGLActiveInfo.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 20; 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/. */ |
5 | | |
6 | | #include "WebGLActiveInfo.h" |
7 | | |
8 | | #include "mozilla/dom/WebGLRenderingContextBinding.h" |
9 | | |
10 | | namespace mozilla { |
11 | | |
12 | | static uint8_t |
13 | | ElemSizeFromType(GLenum elemType) |
14 | 0 | { |
15 | 0 | switch (elemType) { |
16 | 0 | case LOCAL_GL_BOOL: |
17 | 0 | case LOCAL_GL_FLOAT: |
18 | 0 | case LOCAL_GL_INT: |
19 | 0 | case LOCAL_GL_UNSIGNED_INT: |
20 | 0 | case LOCAL_GL_SAMPLER_2D: |
21 | 0 | case LOCAL_GL_SAMPLER_3D: |
22 | 0 | case LOCAL_GL_SAMPLER_CUBE: |
23 | 0 | case LOCAL_GL_SAMPLER_2D_SHADOW: |
24 | 0 | case LOCAL_GL_SAMPLER_2D_ARRAY: |
25 | 0 | case LOCAL_GL_SAMPLER_2D_ARRAY_SHADOW: |
26 | 0 | case LOCAL_GL_SAMPLER_CUBE_SHADOW: |
27 | 0 | case LOCAL_GL_INT_SAMPLER_2D: |
28 | 0 | case LOCAL_GL_INT_SAMPLER_3D: |
29 | 0 | case LOCAL_GL_INT_SAMPLER_CUBE: |
30 | 0 | case LOCAL_GL_INT_SAMPLER_2D_ARRAY: |
31 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_2D: |
32 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_3D: |
33 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_CUBE: |
34 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: |
35 | 0 | return 1; |
36 | 0 |
|
37 | 0 | case LOCAL_GL_BOOL_VEC2: |
38 | 0 | case LOCAL_GL_FLOAT_VEC2: |
39 | 0 | case LOCAL_GL_INT_VEC2: |
40 | 0 | case LOCAL_GL_UNSIGNED_INT_VEC2: |
41 | 0 | return 2; |
42 | 0 |
|
43 | 0 | case LOCAL_GL_BOOL_VEC3: |
44 | 0 | case LOCAL_GL_FLOAT_VEC3: |
45 | 0 | case LOCAL_GL_INT_VEC3: |
46 | 0 | case LOCAL_GL_UNSIGNED_INT_VEC3: |
47 | 0 | return 3; |
48 | 0 |
|
49 | 0 | case LOCAL_GL_BOOL_VEC4: |
50 | 0 | case LOCAL_GL_FLOAT_VEC4: |
51 | 0 | case LOCAL_GL_INT_VEC4: |
52 | 0 | case LOCAL_GL_UNSIGNED_INT_VEC4: |
53 | 0 | case LOCAL_GL_FLOAT_MAT2: |
54 | 0 | return 4; |
55 | 0 |
|
56 | 0 | case LOCAL_GL_FLOAT_MAT2x3: |
57 | 0 | case LOCAL_GL_FLOAT_MAT3x2: |
58 | 0 | return 6; |
59 | 0 |
|
60 | 0 | case LOCAL_GL_FLOAT_MAT2x4: |
61 | 0 | case LOCAL_GL_FLOAT_MAT4x2: |
62 | 0 | return 8; |
63 | 0 |
|
64 | 0 | case LOCAL_GL_FLOAT_MAT3: |
65 | 0 | return 9; |
66 | 0 |
|
67 | 0 | case LOCAL_GL_FLOAT_MAT3x4: |
68 | 0 | case LOCAL_GL_FLOAT_MAT4x3: |
69 | 0 | return 12; |
70 | 0 |
|
71 | 0 | case LOCAL_GL_FLOAT_MAT4: |
72 | 0 | return 16; |
73 | 0 |
|
74 | 0 | default: |
75 | 0 | MOZ_CRASH("GFX: Bad `elemType`."); |
76 | 0 | } |
77 | 0 | } |
78 | | |
79 | | //////////////////// |
80 | | |
81 | | WebGLActiveInfo::WebGLActiveInfo(WebGLContext* webgl, GLint elemCount, GLenum elemType, |
82 | | bool isArray, const nsACString& baseUserName, |
83 | | const nsACString& baseMappedName) |
84 | | : mWebGL(webgl) |
85 | | , mElemCount(elemCount) |
86 | | , mElemType(elemType) |
87 | | , mBaseUserName(baseUserName) |
88 | | , mIsArray(isArray) |
89 | | , mElemSize(ElemSizeFromType(elemType)) |
90 | | , mBaseMappedName(baseMappedName) |
91 | 0 | { } |
92 | | |
93 | | bool |
94 | | WebGLActiveInfo::IsSampler() const |
95 | 0 | { |
96 | 0 | switch (mElemType) { |
97 | 0 | case LOCAL_GL_SAMPLER_2D: |
98 | 0 | case LOCAL_GL_SAMPLER_3D: |
99 | 0 | case LOCAL_GL_SAMPLER_CUBE: |
100 | 0 | case LOCAL_GL_SAMPLER_2D_SHADOW: |
101 | 0 | case LOCAL_GL_SAMPLER_2D_ARRAY: |
102 | 0 | case LOCAL_GL_SAMPLER_2D_ARRAY_SHADOW: |
103 | 0 | case LOCAL_GL_SAMPLER_CUBE_SHADOW: |
104 | 0 | case LOCAL_GL_INT_SAMPLER_2D: |
105 | 0 | case LOCAL_GL_INT_SAMPLER_3D: |
106 | 0 | case LOCAL_GL_INT_SAMPLER_CUBE: |
107 | 0 | case LOCAL_GL_INT_SAMPLER_2D_ARRAY: |
108 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_2D: |
109 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_3D: |
110 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_CUBE: |
111 | 0 | case LOCAL_GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: |
112 | 0 | return true; |
113 | 0 |
|
114 | 0 | default: |
115 | 0 | return false; |
116 | 0 | } |
117 | 0 | } |
118 | | |
119 | | //////////////////////////////////////////////////////////////////////////////// |
120 | | |
121 | | JSObject* |
122 | | WebGLActiveInfo::WrapObject(JSContext* js, JS::Handle<JSObject*> givenProto) |
123 | 0 | { |
124 | 0 | return dom::WebGLActiveInfo_Binding::Wrap(js, this, givenProto); |
125 | 0 | } |
126 | | |
127 | | NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(WebGLActiveInfo) |
128 | | |
129 | | NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(WebGLActiveInfo, AddRef) |
130 | | NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(WebGLActiveInfo, Release) |
131 | | |
132 | | } // namespace mozilla |