Coverage Report

Created: 2018-09-25 14:53

/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