aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLAssembleInterface.cpp
diff options
context:
space:
mode:
authorGravatar cdalton <cdalton@nvidia.com>2015-06-12 13:56:46 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-06-12 13:56:46 -0700
commit626e1ffe84c24a969dc56ca70ab2e950bf5034c4 (patch)
tree3c831a56c26a9b457f312c1cc389cb744a5e87d6 /src/gpu/gl/GrGLAssembleInterface.cpp
parent82fecd4d53ce02a9573ffc07359c67d5243fdbe8 (diff)
Import functionality for new GL backend
Brings in the following functionality: ARB_draw_instanced ARB_instanced_arrays NV_bindless_texture EXT_direct_state_access KHR_debug Also cleans up some of the NVPR extension loading. BUG=skia: Committed: https://skia.googlesource.com/skia/+/202c4c75fb806f751cf796850bf67fe9793e0643 Review URL: https://codereview.chromium.org/1185573003
Diffstat (limited to 'src/gpu/gl/GrGLAssembleInterface.cpp')
-rw-r--r--src/gpu/gl/GrGLAssembleInterface.cpp185
1 files changed, 181 insertions, 4 deletions
diff --git a/src/gpu/gl/GrGLAssembleInterface.cpp b/src/gpu/gl/GrGLAssembleInterface.cpp
index af5b336b9f..6296f6ec3d 100644
--- a/src/gpu/gl/GrGLAssembleInterface.cpp
+++ b/src/gpu/gl/GrGLAssembleInterface.cpp
@@ -153,10 +153,6 @@ const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
GET_PROC(LineWidth);
GET_PROC(LinkProgram);
GET_PROC(MapBuffer);
- if (extensions.has("GL_EXT_direct_state_access")) {
- GET_PROC_SUFFIX(MatrixLoadf, EXT);
- GET_PROC_SUFFIX(MatrixLoadIdentity, EXT);
- }
GET_PROC(PixelStorei);
if (extensions.has("GL_EXT_raster_multisample")) {
GET_PROC_SUFFIX(RasterSamples, EXT);
@@ -273,6 +269,8 @@ const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
}
if (extensions.has("GL_NV_path_rendering")) {
+ GET_PROC_SUFFIX(MatrixLoadf, EXT);
+ GET_PROC_SUFFIX(MatrixLoadIdentity, EXT);
GET_PROC_SUFFIX(PathCommands, NV);
GET_PROC_SUFFIX(PathCoords, NV);
GET_PROC_SUFFIX(PathParameteri, NV);
@@ -323,6 +321,150 @@ const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
GET_PROC(GetProgramResourceLocation);
}
+ if (glVer >= GR_GL_VER(3,1) || extensions.has("GL_ARB_draw_instanced")) {
+ GET_PROC(DrawArraysInstanced);
+ GET_PROC(DrawElementsInstanced);
+ }
+
+ if (glVer >= GR_GL_VER(3,2) || extensions.has("GL_ARB_instanced_arrays")) {
+ GET_PROC(VertexAttribDivisor);
+ }
+
+ if (extensions.has("GL_NV_bindless_texture")) {
+ GET_PROC_SUFFIX(GetTextureHandle, NV);
+ GET_PROC_SUFFIX(GetTextureSamplerHandle, NV);
+ GET_PROC_SUFFIX(MakeTextureHandleResident, NV);
+ GET_PROC_SUFFIX(MakeTextureHandleNonResident, NV);
+ GET_PROC_SUFFIX(GetImageHandle, NV);
+ GET_PROC_SUFFIX(MakeImageHandleResident, NV);
+ GET_PROC_SUFFIX(MakeImageHandleNonResident, NV);
+ GET_PROC_SUFFIX(IsTextureHandleResident, NV);
+ GET_PROC_SUFFIX(IsImageHandleResident, NV);
+ GET_PROC_SUFFIX(UniformHandleui64, NV);
+ GET_PROC_SUFFIX(UniformHandleui64v, NV);
+ GET_PROC_SUFFIX(ProgramUniformHandleui64, NV);
+ GET_PROC_SUFFIX(ProgramUniformHandleui64v, NV);
+ }
+
+ if (extensions.has("GL_EXT_direct_state_access")) {
+ GET_PROC_SUFFIX(TextureParameteri, EXT);
+ GET_PROC_SUFFIX(TextureParameteriv, EXT);
+ GET_PROC_SUFFIX(TextureParameterf, EXT);
+ GET_PROC_SUFFIX(TextureParameterfv, EXT);
+ GET_PROC_SUFFIX(TextureImage1D, EXT);
+ GET_PROC_SUFFIX(TextureImage2D, EXT);
+ GET_PROC_SUFFIX(TextureSubImage1D, EXT);
+ GET_PROC_SUFFIX(TextureSubImage2D, EXT);
+ GET_PROC_SUFFIX(CopyTextureImage1D, EXT);
+ GET_PROC_SUFFIX(CopyTextureImage2D, EXT);
+ GET_PROC_SUFFIX(CopyTextureSubImage1D, EXT);
+ GET_PROC_SUFFIX(CopyTextureSubImage2D, EXT);
+ GET_PROC_SUFFIX(GetTextureImage, EXT);
+ GET_PROC_SUFFIX(GetTextureParameterfv, EXT);
+ GET_PROC_SUFFIX(GetTextureParameteriv, EXT);
+ GET_PROC_SUFFIX(GetTextureLevelParameterfv, EXT);
+ GET_PROC_SUFFIX(GetTextureLevelParameteriv, EXT);
+ if (glVer >= GR_GL_VER(1,2)) {
+ GET_PROC_SUFFIX(TextureImage3D, EXT);
+ GET_PROC_SUFFIX(TextureSubImage3D, EXT);
+ GET_PROC_SUFFIX(CopyTextureSubImage3D, EXT);
+ GET_PROC_SUFFIX(CompressedTextureImage3D, EXT);
+ GET_PROC_SUFFIX(CompressedTextureImage2D, EXT);
+ GET_PROC_SUFFIX(CompressedTextureImage1D, EXT);
+ GET_PROC_SUFFIX(CompressedTextureSubImage3D, EXT);
+ GET_PROC_SUFFIX(CompressedTextureSubImage2D, EXT);
+ GET_PROC_SUFFIX(CompressedTextureSubImage1D, EXT);
+ GET_PROC_SUFFIX(GetCompressedTextureImage, EXT);
+ }
+ if (glVer >= GR_GL_VER(1,5)) {
+ GET_PROC_SUFFIX(NamedBufferData, EXT);
+ GET_PROC_SUFFIX(NamedBufferSubData, EXT);
+ GET_PROC_SUFFIX(MapNamedBuffer, EXT);
+ GET_PROC_SUFFIX(UnmapNamedBuffer, EXT);
+ GET_PROC_SUFFIX(GetNamedBufferParameteriv, EXT);
+ GET_PROC_SUFFIX(GetNamedBufferPointerv, EXT);
+ GET_PROC_SUFFIX(GetNamedBufferSubData, EXT);
+ }
+ if (glVer >= GR_GL_VER(2,0)) {
+ GET_PROC_SUFFIX(ProgramUniform1f, EXT);
+ GET_PROC_SUFFIX(ProgramUniform2f, EXT);
+ GET_PROC_SUFFIX(ProgramUniform3f, EXT);
+ GET_PROC_SUFFIX(ProgramUniform4f, EXT);
+ GET_PROC_SUFFIX(ProgramUniform1i, EXT);
+ GET_PROC_SUFFIX(ProgramUniform2i, EXT);
+ GET_PROC_SUFFIX(ProgramUniform3i, EXT);
+ GET_PROC_SUFFIX(ProgramUniform4i, EXT);
+ GET_PROC_SUFFIX(ProgramUniform1fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniform2fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniform3fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniform4fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniform1iv, EXT);
+ GET_PROC_SUFFIX(ProgramUniform2iv, EXT);
+ GET_PROC_SUFFIX(ProgramUniform3iv, EXT);
+ GET_PROC_SUFFIX(ProgramUniform4iv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix2fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix3fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix4fv, EXT);
+ }
+ if (glVer >= GR_GL_VER(2,1)) {
+ GET_PROC_SUFFIX(ProgramUniformMatrix2x3fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix3x2fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix2x4fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix4x2fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix3x4fv, EXT);
+ GET_PROC_SUFFIX(ProgramUniformMatrix4x3fv, EXT);
+ }
+ if (glVer >= GR_GL_VER(3,0)) {
+ GET_PROC_SUFFIX(NamedRenderbufferStorage, EXT);
+ GET_PROC_SUFFIX(GetNamedRenderbufferParameteriv, EXT);
+ GET_PROC_SUFFIX(NamedRenderbufferStorageMultisample, EXT);
+ GET_PROC_SUFFIX(CheckNamedFramebufferStatus, EXT);
+ GET_PROC_SUFFIX(NamedFramebufferTexture1D, EXT);
+ GET_PROC_SUFFIX(NamedFramebufferTexture2D, EXT);
+ GET_PROC_SUFFIX(NamedFramebufferTexture3D, EXT);
+ GET_PROC_SUFFIX(NamedFramebufferRenderbuffer, EXT);
+ GET_PROC_SUFFIX(GetNamedFramebufferAttachmentParameteriv, EXT);
+ GET_PROC_SUFFIX(GenerateTextureMipmap, EXT);
+ GET_PROC_SUFFIX(FramebufferDrawBuffer, EXT);
+ GET_PROC_SUFFIX(FramebufferDrawBuffers, EXT);
+ GET_PROC_SUFFIX(FramebufferReadBuffer, EXT);
+ GET_PROC_SUFFIX(GetFramebufferParameteriv, EXT);
+ GET_PROC_SUFFIX(NamedCopyBufferSubData, EXT);
+ GET_PROC_SUFFIX(VertexArrayVertexOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayColorOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayEdgeFlagOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayIndexOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayNormalOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayTexCoordOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayMultiTexCoordOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayFogCoordOffset, EXT);
+ GET_PROC_SUFFIX(VertexArraySecondaryColorOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayVertexAttribOffset, EXT);
+ GET_PROC_SUFFIX(VertexArrayVertexAttribIOffset, EXT);
+ GET_PROC_SUFFIX(EnableVertexArray, EXT);
+ GET_PROC_SUFFIX(DisableVertexArray, EXT);
+ GET_PROC_SUFFIX(EnableVertexArrayAttrib, EXT);
+ GET_PROC_SUFFIX(DisableVertexArrayAttrib, EXT);
+ GET_PROC_SUFFIX(GetVertexArrayIntegerv, EXT);
+ GET_PROC_SUFFIX(GetVertexArrayPointerv, EXT);
+ GET_PROC_SUFFIX(GetVertexArrayIntegeri_v, EXT);
+ GET_PROC_SUFFIX(GetVertexArrayPointeri_v, EXT);
+ GET_PROC_SUFFIX(MapNamedBufferRange, EXT);
+ GET_PROC_SUFFIX(FlushMappedNamedBufferRange, EXT);
+ }
+ }
+
+ if (glVer >= GR_GL_VER(4,3) || extensions.has("GL_KHR_debug")) {
+ // KHR_debug defines these methods to have no suffix in an OpenGL (not ES) context.
+ GET_PROC(DebugMessageControl);
+ GET_PROC(DebugMessageInsert);
+ GET_PROC(DebugMessageCallback);
+ GET_PROC(GetDebugMessageLog);
+ GET_PROC(PushDebugGroup);
+ GET_PROC(PopDebugGroup);
+ GET_PROC(ObjectLabel);
+ }
+
interface->fStandard = kGL_GrGLStandard;
interface->fExtensions.swap(&extensions);
@@ -566,6 +708,41 @@ const GrGLInterface* GrGLAssembleGLESInterface(void* ctx, GrGLGetProc get) {
GET_PROC_SUFFIX(CoverageModulation, NV);
}
+ if (version >= GR_GL_VER(3,0) || extensions.has("GL_EXT_draw_instanced")) {
+ GET_PROC(DrawArraysInstanced);
+ GET_PROC(DrawElementsInstanced);
+ }
+
+ if (version >= GR_GL_VER(3,0) || extensions.has("GL_EXT_instanced_arrays")) {
+ GET_PROC(VertexAttribDivisor);
+ }
+
+ if (extensions.has("GL_NV_bindless_texture")) {
+ GET_PROC_SUFFIX(GetTextureHandle, NV);
+ GET_PROC_SUFFIX(GetTextureSamplerHandle, NV);
+ GET_PROC_SUFFIX(MakeTextureHandleResident, NV);
+ GET_PROC_SUFFIX(MakeTextureHandleNonResident, NV);
+ GET_PROC_SUFFIX(GetImageHandle, NV);
+ GET_PROC_SUFFIX(MakeImageHandleResident, NV);
+ GET_PROC_SUFFIX(MakeImageHandleNonResident, NV);
+ GET_PROC_SUFFIX(IsTextureHandleResident, NV);
+ GET_PROC_SUFFIX(IsImageHandleResident, NV);
+ GET_PROC_SUFFIX(UniformHandleui64, NV);
+ GET_PROC_SUFFIX(UniformHandleui64v, NV);
+ GET_PROC_SUFFIX(ProgramUniformHandleui64, NV);
+ GET_PROC_SUFFIX(ProgramUniformHandleui64v, NV);
+ }
+
+ if (extensions.has("GL_KHR_debug")) {
+ GET_PROC_SUFFIX(DebugMessageControl, KHR);
+ GET_PROC_SUFFIX(DebugMessageInsert, KHR);
+ GET_PROC_SUFFIX(DebugMessageCallback, KHR);
+ GET_PROC_SUFFIX(GetDebugMessageLog, KHR);
+ GET_PROC_SUFFIX(PushDebugGroup, KHR);
+ GET_PROC_SUFFIX(PopDebugGroup, KHR);
+ GET_PROC_SUFFIX(ObjectLabel, KHR);
+ }
+
interface->fStandard = kGLES_GrGLStandard;
interface->fExtensions.swap(&extensions);