Compiler - implement shader and program queries
TRAC #11599
Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@76 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Shader.cpp b/src/libGLESv2/Shader.cpp
index f95b4c7..b17a6c9 100644
--- a/src/libGLESv2/Shader.cpp
+++ b/src/libGLESv2/Shader.cpp
@@ -24,7 +24,7 @@
{
mSource = NULL;
mHlsl = NULL;
- mErrors = NULL;
+ mInfoLog = NULL;
// Perform a one-time initialization of the shader compiler (or after being destructed by releaseCompiler)
if (!mFragmentCompiler)
@@ -46,7 +46,7 @@
{
delete[] mSource;
delete[] mHlsl;
- delete[] mErrors;
+ delete[] mInfoLog;
}
void Shader::setSource(GLsizei count, const char **string, const GLint *length)
@@ -89,6 +89,78 @@
mSource[totalLength] = '\0';
}
+int Shader::getInfoLogLength() const
+{
+ if (!mInfoLog)
+ {
+ return 0;
+ }
+ else
+ {
+ return strlen(mInfoLog) + 1;
+ }
+}
+
+void Shader::getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLog)
+{
+ int index = 0;
+
+ if (mInfoLog)
+ {
+ while (index < bufSize - 1 && index < (int)strlen(mInfoLog))
+ {
+ infoLog[index] = mInfoLog[index];
+ index++;
+ }
+ }
+
+ if (bufSize)
+ {
+ infoLog[index] = '\0';
+ }
+
+ if (length)
+ {
+ *length = index;
+ }
+}
+
+int Shader::getSourceLength() const
+{
+ if (!mSource)
+ {
+ return 0;
+ }
+ else
+ {
+ return strlen(mSource) + 1;
+ }
+}
+
+void Shader::getSource(GLsizei bufSize, GLsizei *length, char *source)
+{
+ int index = 0;
+
+ if (mSource)
+ {
+ while (index < bufSize - 1 && index < (int)strlen(mInfoLog))
+ {
+ source[index] = mSource[index];
+ index++;
+ }
+ }
+
+ if (bufSize)
+ {
+ source[index] = '\0';
+ }
+
+ if (length)
+ {
+ *length = index;
+ }
+}
+
bool Shader::isCompiled()
{
return mHlsl != NULL;
@@ -119,6 +191,11 @@
return mDeleteStatus == true && mAttachCount == 0;
}
+bool Shader::isFlaggedForDeletion() const
+{
+ return mDeleteStatus;
+}
+
void Shader::flagForDeletion()
{
mDeleteStatus = true;
@@ -142,8 +219,8 @@
TRACE("\n%s", mSource);
- delete[] mErrors;
- mErrors = NULL;
+ delete[] mInfoLog;
+ mInfoLog = NULL;
TBuiltInResource resources;
@@ -169,10 +246,10 @@
}
else
{
- mErrors = new char[strlen(info) + 1];
- strcpy(mErrors, info);
+ mInfoLog = new char[strlen(info) + 1];
+ strcpy(mInfoLog, info);
- TRACE("\n%s", mErrors);
+ TRACE("\n%s", mInfoLog);
}
}