Add glDrawBuffer(s) to GrGLInterface

Review URL: http://codereview.appspot.com/4841046/



git-svn-id: http://skia.googlecode.com/svn/trunk@2032 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
bsalomon@google.com 2011-08-02 19:29:03 +00:00
Родитель 901aea5a6c
Коммит d32c5f564e
7 изменённых файлов: 23 добавлений и 2 удалений

Просмотреть файл

@ -111,6 +111,8 @@ extern "C" {
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLDisableClientStateProc)(GrGLenum array);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLDisableVertexAttribArrayProc)(GrGLuint index);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLDrawArraysProc)(GrGLenum mode, GrGLint first, GrGLsizei count);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLDrawBufferProc)(GrGLenum mode);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLDrawBuffersProc)(GrGLsizei n, const GrGLenum* bufs);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLDrawElementsProc)(GrGLenum mode, GrGLsizei count, GrGLenum type, const GrGLvoid* indices);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLEnableProc)(GrGLenum cap);
typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLEnableClientStateProc)(GrGLenum cap);
@ -264,6 +266,8 @@ struct GrGLInterface {
GrGLDisableClientStateProc fDisableClientState;
GrGLDisableVertexAttribArrayProc fDisableVertexAttribArray;
GrGLDrawArraysProc fDrawArrays;
GrGLDrawBufferProc fDrawBuffer;
GrGLDrawBuffersProc fDrawBuffers;
GrGLDrawElementsProc fDrawElements;
GrGLEnableProc fEnable;
GrGLEnableClientStateProc fEnableClientState;

Просмотреть файл

@ -286,6 +286,12 @@ bool GrGLInterface::validate(GrEngine engine) const {
return false;
}
}
if (major >= 2 ||
has_gl_extension_from_string("GL_ARB_draw_buffers", ext)) {
if (NULL == fDrawBuffers) {
return false;
}
}
if (1 < major || (1 == major && 4 <= minor) ||
has_gl_extension_from_string("GL_EXT_blend_color", ext)) {
if (NULL == fBlendColor) {
@ -303,10 +309,11 @@ bool GrGLInterface::validate(GrEngine engine) const {
}
}
// part of desktop GL
// part of desktop GL, but not ES
if (kDesktop_GrGLBinding == fBindingsExported &&
(NULL == fLineWidth ||
NULL == fGetTexLevelParameteriv)) {
NULL == fGetTexLevelParameteriv ||
NULL == fDrawBuffer)) {
return false;
}

Просмотреть файл

@ -52,6 +52,8 @@ void GrGLSetDefaultGLInterface() {
NULL, // glDisableClientState
glDisableVertexAttribArray,
glDrawArrays,
NULL, // glDrawBuffer
NULL, // glDrawBuffers
glDrawElements,
glEnable,
NULL, // glEnableClientState

Просмотреть файл

@ -51,6 +51,8 @@ void GrGLSetDefaultGLInterface() {
gDefaultInterface.fDisableVertexAttribArray =
glDisableVertexAttribArray;
gDefaultInterface.fDrawArrays = glDrawArrays;
gDefaultInterface.fDrawBuffer = glDrawBuffer;
gDefaultInterface.fDrawBuffers = glDrawBuffers;
gDefaultInterface.fDrawElements = glDrawElements;
gDefaultInterface.fEnable = glEnable;
gDefaultInterface.fEnableClientState = glEnableClientState;

Просмотреть файл

@ -65,6 +65,8 @@ void GrGLSetDefaultGLInterface() {
gDefaultInterface.fDisableClientState = glDisableClientState;
GR_GL_GET_PROC(DisableVertexAttribArray);
gDefaultInterface.fDrawArrays = glDrawArrays;
gDefaultInterface.fDrawBuffer = glDrawBuffer;
GR_GL_GET_PROC(DrawBuffers);
gDefaultInterface.fDrawElements = glDrawElements;
gDefaultInterface.fEnable = glEnable;
gDefaultInterface.fEnableClientState = glEnableClientState;

Просмотреть файл

@ -67,6 +67,8 @@ void GrGLSetDefaultGLInterface() {
gDefaultInterface.fDisableClientState = glDisableClientState;
GR_GL_GET_PROC(DisableVertexAttribArray);
gDefaultInterface.fDrawArrays = glDrawArrays;
gDefaultInterface.fDrawBuffer = glDrawBuffer;
GR_GL_GET_PROC(DrawBuffers);
gDefaultInterface.fDrawElements = glDrawElements;
gDefaultInterface.fEnable = glEnable;
gDefaultInterface.fEnableClientState = glEnableClientState;

Просмотреть файл

@ -57,6 +57,7 @@ void GrGLSetDefaultGLInterface() {
gDefaultInterface.fDisable = glDisable;
gDefaultInterface.fDisableClientState = glDisableClientState;
gDefaultInterface.fDrawArrays = glDrawArrays;
gDefaultInterface.fDrawBuffer = glDrawBuffer;
gDefaultInterface.fDrawElements = glDrawElements;
gDefaultInterface.fEnable = glEnable;
gDefaultInterface.fEnableClientState = glEnableClientState;
@ -102,6 +103,7 @@ void GrGLSetDefaultGLInterface() {
GR_GL_GET_PROC(DeleteProgram);
GR_GL_GET_PROC(DeleteShader);
GR_GL_GET_PROC(DisableVertexAttribArray);
GR_GL_GET_PROC(DrawBuffers);
GR_GL_GET_PROC(EnableVertexAttribArray);
GR_GL_GET_PROC(GenBuffers);
GR_GL_GET_PROC(GetBufferParameteriv);