Bug 96937

Summary: OpenGL building issue when compiling for Harmattan
Product: WebKit Reporter: Laszlo Papp <lpapp>
Component: PlatformAssignee: Lauro Moura Maranhao Neto <lauro.neto>
Status: RESOLVED FIXED    
Severity: Normal CC: dino, hausmann, lauro.neto, noam, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Other   
OS: Other   
Attachments:
Description Flags
Initial fixes
none
Patch none

Description Laszlo Papp 2012-09-17 11:56:41 PDT
There are two issues:

1) PFNGL*
2) GLchar not typedef'd for Harmattan so a workaround needs to be added in here, just like it was done for the QtBase project.

In file included from platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:37:
platform/graphics/opengl/Extensions3DOpenGLES.h:110: error: 'PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:111: error: 'PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:112: error: 'PFNGLBINDVERTEXARRAYOESPROC' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:113: error: 'PFNGLDELETEVERTEXARRAYSOESPROC' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:114: error: 'PFNGLGENVERTEXARRAYSOESPROC' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:115: error: 'PFNGLISVERTEXARRAYOESPROC' does not name a type
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'void WebCore::GraphicsContext3D::compileShader(Platform3DObject)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:480: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:482: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'bool WebCore::GraphicsContext3D::getActiveAttrib(Platform3DObject, GC3Duint, WebCore::ActiveInfo&)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:636: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:639: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'bool WebCore::GraphicsContext3D::getActiveUniform(Platform3DObject, GC3Duint, WebCore::ActiveInfo&)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:660: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:664: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'WTF::String WebCore::GraphicsContext3D::getProgramInfoLog(Platform3DObject)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1119: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1121: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'WTF::String WebCore::GraphicsContext3D::getShaderInfoLog(Platform3DObject)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1186: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1188: error: request for member 'get' in 'info', which is of non-class type 'int'
make[3]: *** [obj/release/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.o] Error 1
make[3]: Leaving directory `/home/lpapp/qt5-beta1/qt5-webkit/qt5-webkit/Source/WebCore'
make[2]: *** [sub-Target-pri-make_first-ordered] Error 2
make[2]: Leaving directory `/home/lpapp/qt5-beta1/qt5-webkit/qt5-webkit/Source/WebCore'
make[1]: *** [sub-Source-WebCore-WebCore-pro-make_first-ordered] Error 2
make[1]: Leaving directory `/home/lpapp/qt5-beta1/qt5-webkit/qt5-webkit'
dh_auto_build: make -j1 returned exit code 2
make: *** [build] Error 9
Comment 1 Lauro Moura Maranhao Neto 2012-09-17 16:38:54 PDT
Created attachment 164474 [details]
Initial fixes
Comment 2 Lauro Moura Maranhao Neto 2012-09-17 16:41:47 PDT
As suggested by Simon over IRC, including qopengles2ext.h from Extensions3DOpenGLES.h helped solve the issue, but just including it causes the build to fail like in https://bugs.webkit.org/show_bug.cgi?id=91030.

This is due to qopengles2ext.h defining two of the PFN* extension functions with a PROC suffix (like Khrono's version) while WebKit's own ANGLE copy does not.

So, in the first patch are the initial changes to make it past this problem.
Comment 3 Laszlo Papp 2012-09-18 01:37:31 PDT
Wouldn't a qopengl.h include be enough?

That would already have the typedef for the GLchar, and would also include the qopengles2ext.h header.
Comment 4 Simon Hausmann 2012-09-18 04:27:14 PDT
Part of the problem is that the qopengles2ext.h header has what I believe is a bug. See also https://codereview.qt-project.org/#change,35004

This can be worked around though by avoiding the inclusion of gl2ext.h.
Comment 5 Simon Hausmann 2012-09-18 04:42:02 PDT
Created attachment 164532 [details]
Patch
Comment 6 WebKit Review Bot 2012-09-18 05:24:23 PDT
Comment on attachment 164532 [details]
Patch

Clearing flags on attachment: 164532

Committed r128877: <http://trac.webkit.org/changeset/128877>
Comment 7 WebKit Review Bot 2012-09-18 05:24:27 PDT
All reviewed patches have been landed.  Closing bug.