Merge pull request #296 from chinmaygarde/mac_bindings

Add bindings for "GL_NV_texture_barrier" required on Mac
This commit is contained in:
Chinmay Garde 2015-07-27 12:26:15 -07:00
commit 0fc7d8e96b
8 changed files with 61 additions and 0 deletions

View File

@ -997,6 +997,10 @@ GL_FUNCTIONS = [
# 'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
# 'GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, '
# 'GLenum format, GLenum type, const void* pixels', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glTextureBarrierNV',
'extensions': ['GL_NV_texture_barrier'] }],
'arguments': 'void' },
{ 'return_type': 'void',
'versions': [{ 'name': 'glTransformFeedbackVaryings' }],
'arguments': 'GLuint program, GLsizei count, const char* const* varyings, '

View File

@ -619,6 +619,7 @@ void glTexSubImage2DFn(GLenum target,
GLenum format,
GLenum type,
const void* pixels) override;
void glTextureBarrierNVFn(void) override;
void glTransformFeedbackVaryingsFn(GLuint program,
GLsizei count,
const char* const* varyings,

View File

@ -354,6 +354,7 @@ void DriverGL::InitializeStaticBindings() {
fn.glTexStorage3DFn = 0;
fn.glTexSubImage2DFn = reinterpret_cast<glTexSubImage2DProc>(
GetGLProcAddress("glTexSubImage2D"));
fn.glTextureBarrierNVFn = 0;
fn.glTransformFeedbackVaryingsFn = 0;
fn.glUniform1fFn =
reinterpret_cast<glUniform1fProc>(GetGLProcAddress("glUniform1f"));
@ -530,6 +531,8 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
ext.b_GL_NV_fence = extensions.find("GL_NV_fence ") != std::string::npos;
ext.b_GL_NV_path_rendering =
extensions.find("GL_NV_path_rendering ") != std::string::npos;
ext.b_GL_NV_texture_barrier =
extensions.find("GL_NV_texture_barrier ") != std::string::npos;
ext.b_GL_OES_EGL_image =
extensions.find("GL_OES_EGL_image ") != std::string::npos;
ext.b_GL_OES_get_program_binary =
@ -1879,6 +1882,13 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
DCHECK(fn.glTexStorage3DFn);
}
debug_fn.glTextureBarrierNVFn = 0;
if (ext.b_GL_NV_texture_barrier) {
fn.glTextureBarrierNVFn = reinterpret_cast<glTextureBarrierNVProc>(
GetGLProcAddress("glTextureBarrierNV"));
DCHECK(fn.glTextureBarrierNVFn);
}
debug_fn.glTransformFeedbackVaryingsFn = 0;
if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
fn.glTransformFeedbackVaryingsFn =
@ -4403,6 +4413,13 @@ static void GL_BINDING_CALL Debug_glTexSubImage2D(GLenum target,
height, format, type, pixels);
}
static void GL_BINDING_CALL Debug_glTextureBarrierNV(void) {
GL_SERVICE_LOG("glTextureBarrierNV"
<< "("
<< ")");
g_driver_gl.debug_fn.glTextureBarrierNVFn();
}
static void GL_BINDING_CALL
Debug_glTransformFeedbackVaryings(GLuint program,
GLsizei count,
@ -5888,6 +5905,10 @@ void DriverGL::InitializeDebugBindings() {
debug_fn.glTexSubImage2DFn = fn.glTexSubImage2DFn;
fn.glTexSubImage2DFn = Debug_glTexSubImage2D;
}
if (!debug_fn.glTextureBarrierNVFn) {
debug_fn.glTextureBarrierNVFn = fn.glTextureBarrierNVFn;
fn.glTextureBarrierNVFn = Debug_glTextureBarrierNV;
}
if (!debug_fn.glTransformFeedbackVaryingsFn) {
debug_fn.glTransformFeedbackVaryingsFn = fn.glTransformFeedbackVaryingsFn;
fn.glTransformFeedbackVaryingsFn = Debug_glTransformFeedbackVaryings;
@ -7501,6 +7522,10 @@ void GLApiBase::glTexSubImage2DFn(GLenum target,
format, type, pixels);
}
void GLApiBase::glTextureBarrierNVFn(void) {
driver_->fn.glTextureBarrierNVFn();
}
void GLApiBase::glTransformFeedbackVaryingsFn(GLuint program,
GLsizei count,
const char* const* varyings,
@ -9457,6 +9482,11 @@ void TraceGLApi::glTexSubImage2DFn(GLenum target,
format, type, pixels);
}
void TraceGLApi::glTextureBarrierNVFn(void) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTextureBarrierNV")
gl_api_->glTextureBarrierNVFn();
}
void TraceGLApi::glTransformFeedbackVaryingsFn(GLuint program,
GLsizei count,
const char* const* varyings,
@ -11729,6 +11759,13 @@ void NoContextGLApi::glTexSubImage2DFn(GLenum target,
LOG(ERROR) << "Trying to call glTexSubImage2D() without current GL context";
}
void NoContextGLApi::glTextureBarrierNVFn(void) {
NOTREACHED()
<< "Trying to call glTextureBarrierNV() without current GL context";
LOG(ERROR)
<< "Trying to call glTextureBarrierNV() without current GL context";
}
void NoContextGLApi::glTransformFeedbackVaryingsFn(GLuint program,
GLsizei count,
const char* const* varyings,

View File

@ -740,6 +740,7 @@ typedef void(GL_BINDING_CALL* glTexSubImage2DProc)(GLenum target,
GLenum format,
GLenum type,
const void* pixels);
typedef void(GL_BINDING_CALL* glTextureBarrierNVProc)(void);
typedef void(GL_BINDING_CALL* glTransformFeedbackVaryingsProc)(
GLuint program,
GLsizei count,
@ -960,6 +961,7 @@ struct ExtensionsGL {
bool b_GL_NV_blend_equation_advanced;
bool b_GL_NV_fence;
bool b_GL_NV_path_rendering;
bool b_GL_NV_texture_barrier;
bool b_GL_OES_EGL_image;
bool b_GL_OES_get_program_binary;
bool b_GL_OES_mapbuffer;
@ -1212,6 +1214,7 @@ struct ProcsGL {
glTexStorage2DEXTProc glTexStorage2DEXTFn;
glTexStorage3DProc glTexStorage3DFn;
glTexSubImage2DProc glTexSubImage2DFn;
glTextureBarrierNVProc glTextureBarrierNVFn;
glTransformFeedbackVaryingsProc glTransformFeedbackVaryingsFn;
glUniform1fProc glUniform1fFn;
glUniform1fvProc glUniform1fvFn;
@ -1911,6 +1914,7 @@ class GL_EXPORT GLApi {
GLenum format,
GLenum type,
const void* pixels) = 0;
virtual void glTextureBarrierNVFn(void) = 0;
virtual void glTransformFeedbackVaryingsFn(GLuint program,
GLsizei count,
const char* const* varyings,
@ -2383,6 +2387,7 @@ class GL_EXPORT GLApi {
#define glTexStorage2DEXT ::gfx::g_current_gl_context->glTexStorage2DEXTFn
#define glTexStorage3D ::gfx::g_current_gl_context->glTexStorage3DFn
#define glTexSubImage2D ::gfx::g_current_gl_context->glTexSubImage2DFn
#define glTextureBarrierNV ::gfx::g_current_gl_context->glTextureBarrierNVFn
#define glTransformFeedbackVaryings \
::gfx::g_current_gl_context->glTransformFeedbackVaryingsFn
#define glUniform1f ::gfx::g_current_gl_context->glUniform1fFn

View File

@ -2202,6 +2202,11 @@ void GL_BINDING_CALL MockGLInterface::Mock_glTexSubImage2D(GLenum target,
format, type, pixels);
}
void GL_BINDING_CALL MockGLInterface::Mock_glTextureBarrierNV(void) {
MakeFunctionUnique("glTextureBarrierNV");
interface_->TextureBarrierNV();
}
void GL_BINDING_CALL
MockGLInterface::Mock_glTransformFeedbackVaryings(GLuint program,
GLsizei count,
@ -3230,6 +3235,8 @@ void* GL_BINDING_CALL MockGLInterface::GetGLProcAddress(const char* name) {
return reinterpret_cast<void*>(Mock_glTexStorage3D);
if (strcmp(name, "glTexSubImage2D") == 0)
return reinterpret_cast<void*>(Mock_glTexSubImage2D);
if (strcmp(name, "glTextureBarrierNV") == 0)
return reinterpret_cast<void*>(Mock_glTextureBarrierNV);
if (strcmp(name, "glTransformFeedbackVaryings") == 0)
return reinterpret_cast<void*>(Mock_glTransformFeedbackVaryings);
if (strcmp(name, "glUniform1f") == 0)

View File

@ -842,6 +842,7 @@ static void GL_BINDING_CALL Mock_glTexSubImage2D(GLenum target,
GLenum format,
GLenum type,
const void* pixels);
static void GL_BINDING_CALL Mock_glTextureBarrierNV(void);
static void GL_BINDING_CALL
Mock_glTransformFeedbackVaryings(GLuint program,
GLsizei count,

View File

@ -699,6 +699,10 @@ GLvoid StubGLObjectLabel(GLenum identifier, GLuint name, GLsizei length,
glObjectLabelKHR(identifier, name, length, label);
}
GLvoid StubTextureBarrier(void) {
glTextureBarrierNV();
}
} // extern "C"
} // namespace
@ -898,6 +902,7 @@ GrGLInterface* CreateInProcessSkiaGLBinding() {
functions->fPushDebugGroup = StubGLPushDebugGroup;
functions->fPopDebugGroup = StubGLPopDebugGroup;
functions->fObjectLabel = StubGLObjectLabel;
functions->fTextureBarrier = StubTextureBarrier;
return interface;
}

View File

@ -625,6 +625,7 @@ MOCK_METHOD9(TexSubImage2D,
GLenum format,
GLenum type,
const void* pixels));
MOCK_METHOD0(TextureBarrierNV, void());
MOCK_METHOD4(TransformFeedbackVaryings,
void(GLuint program,
GLsizei count,