summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Fonseca <jfonseca@vmware.com>2015-08-13 21:25:54 +0100
committerJose Fonseca <jfonseca@vmware.com>2015-08-13 21:25:54 +0100
commit6f05ff3b9e3da0f394a23b5a6c94a08f8bdd1532 (patch)
tree46402d4db80bbbeb531d98f5e33181b717ce3d0f
parent6a7815c2c75464e687a45b1c696bdbcfdd567360 (diff)
glretrace: Support GL_ARB_gpu_shader_int64 uniforms.
-rw-r--r--helpers/glsize.hpp30
-rw-r--r--retrace/glstate_shaders.cpp16
2 files changed, 46 insertions, 0 deletions
diff --git a/helpers/glsize.hpp b/helpers/glsize.hpp
index f0f2ae6b..9557a612 100644
--- a/helpers/glsize.hpp
+++ b/helpers/glsize.hpp
@@ -146,6 +146,36 @@ _gl_uniform_size(GLenum type, GLenum &elemType, GLint &numCols, GLint &numRows)
elemType = GL_UNSIGNED_INT;
numCols = 4;
break;
+ case GL_INT64_ARB:
+ elemType = GL_INT64_ARB;
+ break;
+ case GL_INT64_VEC2_ARB:
+ elemType = GL_INT64_ARB;
+ numCols = 2;
+ break;
+ case GL_INT64_VEC3_ARB:
+ elemType = GL_INT64_ARB;
+ numCols = 3;
+ break;
+ case GL_INT64_VEC4_ARB:
+ elemType = GL_INT64_ARB;
+ numCols = 4;
+ break;
+ case GL_UNSIGNED_INT64_ARB:
+ elemType = GL_UNSIGNED_INT64_ARB;
+ break;
+ case GL_UNSIGNED_INT64_VEC2_ARB:
+ elemType = GL_UNSIGNED_INT64_ARB;
+ numCols = 2;
+ break;
+ case GL_UNSIGNED_INT64_VEC3_ARB:
+ elemType = GL_UNSIGNED_INT64_ARB;
+ numCols = 3;
+ break;
+ case GL_UNSIGNED_INT64_VEC4_ARB:
+ elemType = GL_UNSIGNED_INT64_ARB;
+ numCols = 4;
+ break;
case GL_BOOL:
elemType = GL_BOOL;
break;
diff --git a/retrace/glstate_shaders.cpp b/retrace/glstate_shaders.cpp
index 903deb28..8ef46a3b 100644
--- a/retrace/glstate_shaders.cpp
+++ b/retrace/glstate_shaders.cpp
@@ -289,6 +289,8 @@ dumpAttrib(StateWriter &writer,
const GLdouble *dvalue;
const GLint *ivalue;
const GLuint *uivalue;
+ const GLint64 *i64value;
+ const GLuint64 *ui64value;
} u;
u.rawvalue = data + row*desc.rowStride + col*desc.colStride;
@@ -306,6 +308,12 @@ dumpAttrib(StateWriter &writer,
case GL_UNSIGNED_INT:
writer.writeInt(*u.uivalue);
break;
+ case GL_INT64_ARB:
+ writer.writeInt(*u.i64value);
+ break;
+ case GL_UNSIGNED_INT64_ARB:
+ writer.writeInt(*u.ui64value);
+ break;
case GL_BOOL:
writer.writeBool(*u.uivalue);
break;
@@ -435,6 +443,8 @@ dumpUniform(StateWriter &writer,
GLdouble dvalues[4*4];
GLint ivalues[4*4];
GLuint uivalues[4*4];
+ GLint64 i64values[4*4];
+ GLuint64 ui64values[4*4];
GLbyte data[4*4*4];
} u;
@@ -474,6 +484,12 @@ dumpUniform(StateWriter &writer,
case GL_UNSIGNED_INT:
glGetUniformuiv(program, location, u.uivalues);
break;
+ case GL_INT64_ARB:
+ glGetUniformi64vARB(program, location, u.i64values);
+ break;
+ case GL_UNSIGNED_INT64_ARB:
+ glGetUniformui64vARB(program, location, u.ui64values);
+ break;
case GL_BOOL:
glGetUniformiv(program, location, u.ivalues);
break;