Commit ccd97810 by Nicolas Capens

Implement glGetPointerv().

Bug 26794307 Change-Id: I0aa175f091550d544a33503b602c191353e7a1c5 Reviewed-on: https://swiftshader-review.googlesource.com/4606Tested-by: 's avatarNicolas Capens <capn@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent b8cec702
...@@ -1381,6 +1381,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1381,6 +1381,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
case GL_NORMAL_ARRAY_TYPE: *params = mState.vertexAttribute[sw::Normal].mType; break; case GL_NORMAL_ARRAY_TYPE: *params = mState.vertexAttribute[sw::Normal].mType; break;
case GL_NORMAL_ARRAY_STRIDE: *params = mState.vertexAttribute[sw::Normal].mStride; break; case GL_NORMAL_ARRAY_STRIDE: *params = mState.vertexAttribute[sw::Normal].mStride; break;
case GL_NORMAL_ARRAY_BUFFER_BINDING: *params = mState.vertexAttribute[sw::Normal].mBoundBuffer.name(); break; case GL_NORMAL_ARRAY_BUFFER_BINDING: *params = mState.vertexAttribute[sw::Normal].mBoundBuffer.name(); break;
case GL_COLOR_ARRAY_SIZE: *params = mState.vertexAttribute[sw::Color0].mSize; break;
case GL_COLOR_ARRAY_TYPE: *params = mState.vertexAttribute[sw::Color0].mType; break; case GL_COLOR_ARRAY_TYPE: *params = mState.vertexAttribute[sw::Color0].mType; break;
case GL_COLOR_ARRAY_STRIDE: *params = mState.vertexAttribute[sw::Color0].mStride; break; case GL_COLOR_ARRAY_STRIDE: *params = mState.vertexAttribute[sw::Color0].mStride; break;
case GL_COLOR_ARRAY_BUFFER_BINDING: *params = mState.vertexAttribute[sw::Color0].mBoundBuffer.name(); break; case GL_COLOR_ARRAY_BUFFER_BINDING: *params = mState.vertexAttribute[sw::Color0].mBoundBuffer.name(); break;
...@@ -1395,6 +1396,22 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1395,6 +1396,22 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
return true; return true;
} }
bool Context::getPointerv(GLenum pname, const GLvoid **params)
{
switch(pname)
{
case GL_VERTEX_ARRAY_POINTER: *params = mState.vertexAttribute[sw::Position].mPointer; break;
case GL_NORMAL_ARRAY_POINTER: *params = mState.vertexAttribute[sw::Normal].mPointer; break;
case GL_COLOR_ARRAY_POINTER: *params = mState.vertexAttribute[sw::Color0].mPointer; break;
case GL_POINT_SIZE_ARRAY_POINTER_OES: *params = mState.vertexAttribute[sw::PointSize].mPointer; break;
case GL_TEXTURE_COORD_ARRAY_POINTER: *params = mState.vertexAttribute[sw::TexCoord0 + mState.activeSampler].mPointer; break;
default:
return false;
}
return true;
}
int Context::getQueryParameterNum(GLenum pname) int Context::getQueryParameterNum(GLenum pname)
{ {
// Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation // Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation
......
...@@ -475,6 +475,7 @@ public: ...@@ -475,6 +475,7 @@ public:
bool getFloatv(GLenum pname, GLfloat *params); bool getFloatv(GLenum pname, GLfloat *params);
bool getIntegerv(GLenum pname, GLint *params); bool getIntegerv(GLenum pname, GLint *params);
bool getBooleanv(GLenum pname, GLboolean *params); bool getBooleanv(GLenum pname, GLboolean *params);
bool getPointerv(GLenum pname, const GLvoid **params);
int getQueryParameterNum(GLenum pname); int getQueryParameterNum(GLenum pname);
bool isQueryParameterInt(GLenum pname); bool isQueryParameterInt(GLenum pname);
......
...@@ -2245,7 +2245,17 @@ void GetMaterialxv(GLenum face, GLenum pname, GLfixed *params) ...@@ -2245,7 +2245,17 @@ void GetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
void GetPointerv(GLenum pname, GLvoid **params) void GetPointerv(GLenum pname, GLvoid **params)
{ {
UNIMPLEMENTED(); TRACE("(GLenum pname = 0x%X, GLvoid **params = %p)", pname, params);
es1::Context *context = es1::getContext();
if(context)
{
if(!(context->getPointerv(pname, const_cast<const GLvoid**>(params))))
{
return error(GL_INVALID_ENUM);
}
}
} }
const GLubyte* GetString(GLenum name) const GLubyte* GetString(GLenum name)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment