Allow the block encoder classes to encode types directly passed by value, instead of as a compound type.
TRAC #23754
Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods
diff --git a/src/compiler/BlockLayoutEncoder.h b/src/compiler/BlockLayoutEncoder.h
index 01e611d..57a8d81 100644
--- a/src/compiler/BlockLayoutEncoder.h
+++ b/src/compiler/BlockLayoutEncoder.h
@@ -8,6 +8,9 @@
#define TRANSLATOR_COMMON_BLOCKLAYOUTENCODER_H_
#include <vector>
+#define GL_APICALL
+#include <GLES3/gl3.h>
+#include <GLES2/gl2.h>
namespace sh
{
@@ -22,6 +25,7 @@
void encodeFields(const std::vector<Uniform> &fields);
void encodeType(const Uniform &uniform);
+ void encodeType(GLenum type, unsigned int arraySize, bool isRowMajorMatrix);
size_t getBlockSize() { return mCurrentOffset * ComponentSize; }
static const size_t ComponentSize = 4u;
@@ -34,8 +38,8 @@
virtual void enterAggregateType() = 0;
virtual void exitAggregateType() = 0;
- virtual void getBlockLayoutInfo(const Uniform &uniform, int *arrayStrideOut, int *matrixStrideOut) = 0;
- virtual void advanceOffset(const Uniform &uniform, int arrayStride, int matrixStride) = 0;
+ virtual void getBlockLayoutInfo(GLenum type, unsigned int arraySize, bool isRowMajorMatrix, int *arrayStrideOut, int *matrixStrideOut) = 0;
+ virtual void advanceOffset(GLenum type, unsigned int arraySize, bool isRowMajorMatrix, int arrayStride, int matrixStride) = 0;
private:
std::vector<BlockMemberInfo> *mBlockInfoOut;
@@ -52,8 +56,8 @@
protected:
virtual void enterAggregateType();
virtual void exitAggregateType();
- virtual void getBlockLayoutInfo(const Uniform &uniform, int *arrayStrideOut, int *matrixStrideOut);
- virtual void advanceOffset(const Uniform &uniform, int arrayStride, int matrixStride);
+ virtual void getBlockLayoutInfo(GLenum type, unsigned int arraySize, bool isRowMajorMatrix, int *arrayStrideOut, int *matrixStrideOut);
+ virtual void advanceOffset(GLenum type, unsigned int arraySize, bool isRowMajorMatrix, int arrayStride, int matrixStride);
};
}