diff options
Diffstat (limited to 'emulator/opengl')
3 files changed, 12 insertions, 0 deletions
diff --git a/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp b/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp index fe64f6f..c97e061 100644 --- a/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp +++ b/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp @@ -302,6 +302,7 @@ GL_APICALL void GL_APIENTRY glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, G GL_APICALL void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage){ GET_CTX(); SET_ERROR_IF(!GLESv2Validate::bufferTarget(target),GL_INVALID_ENUM); + SET_ERROR_IF(!GLESv2Validate::bufferUsage(usage),GL_INVALID_ENUM); SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION); ctx->setBufferData(target,size,data,usage); } diff --git a/emulator/opengl/host/libs/Translator/GLcommon/GLESvalidate.cpp b/emulator/opengl/host/libs/Translator/GLcommon/GLESvalidate.cpp index 882d95b..8e35978 100644 --- a/emulator/opengl/host/libs/Translator/GLcommon/GLESvalidate.cpp +++ b/emulator/opengl/host/libs/Translator/GLcommon/GLESvalidate.cpp @@ -78,6 +78,16 @@ bool GLESvalidate::bufferTarget(GLenum target) { return target == GL_ARRAY_BUFFER || target == GL_ELEMENT_ARRAY_BUFFER; } +bool GLESvalidate::bufferUsage(GLenum usage) { + switch(usage) { + case GL_STREAM_DRAW: + case GL_STATIC_DRAW: + case GL_DYNAMIC_DRAW: + return true; + } + return false; +} + bool GLESvalidate::bufferParam(GLenum param) { return (param == GL_BUFFER_SIZE) || (param == GL_BUFFER_USAGE); } diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h index 3daaa7c..92c1f33 100644 --- a/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h @@ -25,6 +25,7 @@ static bool pixelType(GLEScontext * ctx,GLenum type); static bool pixelOp(GLenum format,GLenum type); static bool pixelFrmt(GLEScontext* ctx , GLenum format); static bool bufferTarget(GLenum target); +static bool bufferUsage(GLenum usage); static bool bufferParam(GLenum param); static bool drawMode(GLenum mode); static bool drawType(GLenum mode); |