blob: 22f94314d23e8e56684e1043f3c2d712a6f66bf4 [file] [log] [blame]
daniel@transgaming.com15186aa2012-12-20 21:08:23 +00001//
2// Copyright (c) 2010-2012 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#include "libGLESv2/Uniform.h"
8
9#include "libGLESv2/utilities.h"
10
11namespace gl
12{
13
daniel@transgaming.comdb019952012-12-20 21:13:32 +000014Uniform::Uniform(GLenum type, const std::string &name, unsigned int arraySize)
15 : type(type), name(name), arraySize(arraySize)
daniel@transgaming.com15186aa2012-12-20 21:08:23 +000016{
daniel@transgaming.come6d12e92012-12-20 21:12:47 +000017 int bytes = gl::UniformInternalSize(type) * elementCount();
daniel@transgaming.com15186aa2012-12-20 21:08:23 +000018 data = new unsigned char[bytes];
19 memset(data, 0, bytes);
20 dirty = true;
21}
22
23Uniform::~Uniform()
24{
25 delete[] data;
26}
27
daniel@transgaming.come6d12e92012-12-20 21:12:47 +000028bool Uniform::isArray() const
daniel@transgaming.com15186aa2012-12-20 21:08:23 +000029{
daniel@transgaming.comdb019952012-12-20 21:13:32 +000030 return arraySize > 0;
daniel@transgaming.come6d12e92012-12-20 21:12:47 +000031}
32
33unsigned int Uniform::elementCount() const
34{
35 return arraySize > 0 ? arraySize : 1;
36}
37
38unsigned int Uniform::registerCount() const
39{
40 return VariableRowCount(type) * elementCount();
daniel@transgaming.com15186aa2012-12-20 21:08:23 +000041}
42
daniel@transgaming.com15186aa2012-12-20 21:08:23 +000043}