summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/libANGLE/Uniform.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/src/libANGLE/Uniform.h')
-rwxr-xr-xgfx/angle/src/libANGLE/Uniform.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/gfx/angle/src/libANGLE/Uniform.h b/gfx/angle/src/libANGLE/Uniform.h
new file mode 100755
index 000000000..3b822e52b
--- /dev/null
+++ b/gfx/angle/src/libANGLE/Uniform.h
@@ -0,0 +1,74 @@
+//
+// Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#ifndef LIBANGLE_UNIFORM_H_
+#define LIBANGLE_UNIFORM_H_
+
+#include <string>
+#include <vector>
+
+#include "angle_gl.h"
+#include "common/debug.h"
+#include "common/MemoryBuffer.h"
+#include "compiler/translator/blocklayout.h"
+#include "libANGLE/angletypes.h"
+
+namespace gl
+{
+
+// Helper struct representing a single shader uniform
+struct LinkedUniform : public sh::Uniform
+{
+ LinkedUniform();
+ LinkedUniform(GLenum type, GLenum precision, const std::string &name, unsigned int arraySize, const int blockIndex, const sh::BlockMemberInfo &blockInfo);
+ LinkedUniform(const sh::Uniform &uniform);
+ LinkedUniform(const LinkedUniform &uniform);
+ LinkedUniform &operator=(const LinkedUniform &uniform);
+ ~LinkedUniform();
+
+ size_t dataSize() const;
+ uint8_t *data();
+ const uint8_t *data() const;
+ bool isSampler() const;
+ bool isInDefaultBlock() const;
+ bool isField() const;
+ size_t getElementSize() const;
+ size_t getElementComponents() const;
+ uint8_t *getDataPtrToElement(size_t elementIndex);
+ const uint8_t *getDataPtrToElement(size_t elementIndex) const;
+
+ int blockIndex;
+ sh::BlockMemberInfo blockInfo;
+
+ private:
+ mutable rx::MemoryBuffer mLazyData;
+};
+
+// Helper struct representing a single shader uniform block
+struct UniformBlock
+{
+ UniformBlock();
+ UniformBlock(const std::string &nameIn, bool isArrayIn, unsigned int arrayElementIn);
+ UniformBlock(const UniformBlock &other) = default;
+ UniformBlock &operator=(const UniformBlock &other) = default;
+
+ std::string nameWithArrayIndex() const;
+
+ std::string name;
+ bool isArray;
+ unsigned int arrayElement;
+ unsigned int dataSize;
+
+ bool vertexStaticUse;
+ bool fragmentStaticUse;
+ bool computeStaticUse;
+
+ std::vector<unsigned int> memberUniformIndexes;
+};
+
+}
+
+#endif // LIBANGLE_UNIFORM_H_