Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: ui/gl/gl_bindings_autogen_gl.cc

Issue 1309743005: command_buffer: Implement EXT_blend_func_extended (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new-05-path-fragment-input-gen
Patch Set: rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gl/gl_bindings_autogen_gl.h ('k') | ui/gl/gl_bindings_autogen_mock.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gl/gl_bindings_autogen_gl.cc
diff --git a/ui/gl/gl_bindings_autogen_gl.cc b/ui/gl/gl_bindings_autogen_gl.cc
index e7482d7dc71af0b5db9256f250420c560541fcda..eabd4ae9213e2fe293f320ac6935fabedf5c6d9e 100644
--- a/ui/gl/gl_bindings_autogen_gl.cc
+++ b/ui/gl/gl_bindings_autogen_gl.cc
@@ -202,6 +202,7 @@ void DriverGL::InitializeStaticBindings() {
fn.glGetFenceivNVFn = 0;
fn.glGetFloatvFn =
reinterpret_cast<glGetFloatvProc>(GetGLProcAddress("glGetFloatv"));
+ fn.glGetFragDataIndexFn = 0;
fn.glGetFragDataLocationFn = 0;
fn.glGetFramebufferAttachmentParameterivEXTFn = 0;
fn.glGetGraphicsResetStatusARBFn = 0;
@@ -481,6 +482,8 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
extensions.find("GL_APPLE_fence ") != std::string::npos;
ext.b_GL_APPLE_vertex_array_object =
extensions.find("GL_APPLE_vertex_array_object ") != std::string::npos;
+ ext.b_GL_ARB_blend_func_extended =
+ extensions.find("GL_ARB_blend_func_extended ") != std::string::npos;
ext.b_GL_ARB_draw_buffers =
extensions.find("GL_ARB_draw_buffers ") != std::string::npos;
ext.b_GL_ARB_draw_instanced =
@@ -509,6 +512,8 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
std::string::npos;
ext.b_GL_CHROMIUM_glgetstringi_hack =
extensions.find("GL_CHROMIUM_glgetstringi_hack ") != std::string::npos;
+ ext.b_GL_EXT_blend_func_extended =
+ extensions.find("GL_EXT_blend_func_extended ") != std::string::npos;
ext.b_GL_EXT_debug_marker =
extensions.find("GL_EXT_debug_marker ") != std::string::npos;
ext.b_GL_EXT_direct_state_access =
@@ -525,6 +530,8 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
extensions.find("GL_EXT_framebuffer_multisample ") != std::string::npos;
ext.b_GL_EXT_framebuffer_object =
extensions.find("GL_EXT_framebuffer_object ") != std::string::npos;
+ ext.b_GL_EXT_gpu_shader4 =
+ extensions.find("GL_EXT_gpu_shader4 ") != std::string::npos;
ext.b_GL_EXT_map_buffer_range =
extensions.find("GL_EXT_map_buffer_range ") != std::string::npos;
ext.b_GL_EXT_multisampled_render_to_texture =
@@ -601,16 +608,23 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
}
debug_fn.glBindFragDataLocationFn = 0;
- if (ver->IsAtLeastGL(3u, 0u)) {
+ if (ver->IsAtLeastGL(3u, 0u) || ext.b_GL_ARB_blend_func_extended) {
fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
GetGLProcAddress("glBindFragDataLocation"));
+ } else if (ext.b_GL_EXT_gpu_shader4 || ext.b_GL_EXT_blend_func_extended) {
+ fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
+ GetGLProcAddress("glBindFragDataLocationEXT"));
}
debug_fn.glBindFragDataLocationIndexedFn = 0;
- if (ver->IsAtLeastGL(3u, 3u)) {
+ if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_blend_func_extended) {
fn.glBindFragDataLocationIndexedFn =
reinterpret_cast<glBindFragDataLocationIndexedProc>(
GetGLProcAddress("glBindFragDataLocationIndexed"));
+ } else if (ext.b_GL_EXT_blend_func_extended) {
+ fn.glBindFragDataLocationIndexedFn =
+ reinterpret_cast<glBindFragDataLocationIndexedProc>(
+ GetGLProcAddress("glBindFragDataLocationIndexedEXT"));
}
debug_fn.glBindFramebufferEXTFn = 0;
@@ -1157,6 +1171,15 @@ void DriverGL::InitializeDynamicBindings(GLContext* context) {
GetGLProcAddress("glGetFenceivNV"));
}
+ debug_fn.glGetFragDataIndexFn = 0;
+ if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_blend_func_extended) {
+ fn.glGetFragDataIndexFn = reinterpret_cast<glGetFragDataIndexProc>(
+ GetGLProcAddress("glGetFragDataIndex"));
+ } else if (ext.b_GL_EXT_blend_func_extended) {
+ fn.glGetFragDataIndexFn = reinterpret_cast<glGetFragDataIndexProc>(
+ GetGLProcAddress("glGetFragDataIndexEXT"));
+ }
+
debug_fn.glGetFragDataLocationFn = 0;
if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
fn.glGetFragDataLocationFn = reinterpret_cast<glGetFragDataLocationProc>(
@@ -3188,6 +3211,15 @@ static void GL_BINDING_CALL Debug_glGetFloatv(GLenum pname, GLfloat* params) {
g_driver_gl.debug_fn.glGetFloatvFn(pname, params);
}
+static GLint GL_BINDING_CALL Debug_glGetFragDataIndex(GLuint program,
+ const char* name) {
+ GL_SERVICE_LOG("glGetFragDataIndex"
+ << "(" << program << ", " << name << ")");
+ GLint result = g_driver_gl.debug_fn.glGetFragDataIndexFn(program, name);
+ GL_SERVICE_LOG("GL_RESULT: " << result);
+ return result;
+}
+
static GLint GL_BINDING_CALL Debug_glGetFragDataLocation(GLuint program,
const char* name) {
GL_SERVICE_LOG("glGetFragDataLocation"
@@ -5591,6 +5623,10 @@ void DriverGL::InitializeDebugBindings() {
debug_fn.glGetFloatvFn = fn.glGetFloatvFn;
fn.glGetFloatvFn = Debug_glGetFloatv;
}
+ if (!debug_fn.glGetFragDataIndexFn) {
+ debug_fn.glGetFragDataIndexFn = fn.glGetFragDataIndexFn;
+ fn.glGetFragDataIndexFn = Debug_glGetFragDataIndex;
+ }
if (!debug_fn.glGetFragDataLocationFn) {
debug_fn.glGetFragDataLocationFn = fn.glGetFragDataLocationFn;
fn.glGetFragDataLocationFn = Debug_glGetFragDataLocation;
@@ -7103,6 +7139,10 @@ void GLApiBase::glGetFloatvFn(GLenum pname, GLfloat* params) {
driver_->fn.glGetFloatvFn(pname, params);
}
+GLint GLApiBase::glGetFragDataIndexFn(GLuint program, const char* name) {
+ return driver_->fn.glGetFragDataIndexFn(program, name);
+}
+
GLint GLApiBase::glGetFragDataLocationFn(GLuint program, const char* name) {
return driver_->fn.glGetFragDataLocationFn(program, name);
}
@@ -9104,6 +9144,11 @@ void TraceGLApi::glGetFloatvFn(GLenum pname, GLfloat* params) {
gl_api_->glGetFloatvFn(pname, params);
}
+GLint TraceGLApi::glGetFragDataIndexFn(GLuint program, const char* name) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetFragDataIndex")
+ return gl_api_->glGetFragDataIndexFn(program, name);
+}
+
GLint TraceGLApi::glGetFragDataLocationFn(GLuint program, const char* name) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetFragDataLocation")
return gl_api_->glGetFragDataLocationFn(program, name);
@@ -11415,6 +11460,14 @@ void NoContextGLApi::glGetFloatvFn(GLenum pname, GLfloat* params) {
LOG(ERROR) << "Trying to call glGetFloatv() without current GL context";
}
+GLint NoContextGLApi::glGetFragDataIndexFn(GLuint program, const char* name) {
+ NOTREACHED()
+ << "Trying to call glGetFragDataIndex() without current GL context";
+ LOG(ERROR)
+ << "Trying to call glGetFragDataIndex() without current GL context";
+ return 0;
+}
+
GLint NoContextGLApi::glGetFragDataLocationFn(GLuint program,
const char* name) {
NOTREACHED()
« no previous file with comments | « ui/gl/gl_bindings_autogen_gl.h ('k') | ui/gl/gl_bindings_autogen_mock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698