gles: Fix compile errors. (#976)

* fix gles build error

* fix format check fail

* fix Werror and link error

* gles: Makefile changes

Change-Id: Ie493a730e6004f9251bbf9b534f758e0dc920191

Co-authored-by: Guang <891528583@qq.com>
This commit is contained in:
Sreelakshmi Haridas Maruthur
2020-11-09 04:04:57 -07:00
committed by GitHub
parent 63f01be181
commit 16ddfbb1ae
7 changed files with 54 additions and 32 deletions

View File

@@ -197,6 +197,10 @@ if(LINK_PTHREAD)
list(APPEND CLConform_LIBRARIES pthread) list(APPEND CLConform_LIBRARIES pthread)
endif() endif()
if(DEFINED USE_GLES3)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGLES3")
endif()
if(APPLE) if(APPLE)
find_library(corefoundation CoreFoundation) find_library(corefoundation CoreFoundation)
find_library(iokit IOKit) find_library(iokit IOKit)

View File

@@ -24,10 +24,12 @@
#include <GLES3/gl3.h> #include <GLES3/gl3.h>
#else #else
#include <GLES2/gl2.h> #include <GLES2/gl2.h>
#define glTexImage3DOES glTexImage3D
#define glUnmapBufferOES glUnmapBuffer
#define glMapBufferRangeEXT glMapBufferRange
#endif #endif
#include <GLES2/gl2ext.h> #include <GLES2/gl2ext.h>
#include <GLES2/gl2extQCOM.h>
// Some macros to minimize the changes in the tests from GL to GLES2 // Some macros to minimize the changes in the tests from GL to GLES2
#define glGenRenderbuffersEXT glGenRenderbuffers #define glGenRenderbuffersEXT glGenRenderbuffers
@@ -40,21 +42,26 @@
#define glDeleteFramebuffersEXT glDeleteFramebuffers #define glDeleteFramebuffersEXT glDeleteFramebuffers
#define glBindFramebufferEXT glBindFramebuffer #define glBindFramebufferEXT glBindFramebuffer
#define glFramebufferRenderbufferEXT glFramebufferRenderbuffer #define glFramebufferRenderbufferEXT glFramebufferRenderbuffer
#define glTexImage3D glTexImage3DOES
#ifndef GL_ES_VERSION_3_0
#define GL_RGBA32F GL_RGBA32F_EXT
#define GL_READ_ONLY GL_BUFFER_ACCESS_OES
#define GL_HALF_FLOAT_ARB GL_HALF_FLOAT_OES
#define GL_BGRA GL_BGRA_EXT
#else
#define GL_HALF_FLOAT_ARB GL_HALF_FLOAT
#endif
#define glutGetProcAddress eglGetProcAddress #define glutGetProcAddress eglGetProcAddress
#define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER #define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER
#define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE #define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE
#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT GL_RENDERBUFFER_INTERNAL_FORMAT #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT GL_RENDERBUFFER_INTERNAL_FORMAT
#define GL_RENDERBUFFER_EXT GL_RENDERBUFFER #define GL_RENDERBUFFER_EXT GL_RENDERBUFFER
#define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0
#define GL_DEPTH_ATTACHMENT_EXT GL_DEPTH_ATTACHMENT #define GL_DEPTH_ATTACHMENT_EXT GL_DEPTH_ATTACHMENT
#define GL_TEXTURE_3D GL_TEXTURE_3D_OES
#define GL_READ_ONLY GL_BUFFER_ACCESS_OES
#define GL_HALF_FLOAT_ARB GL_HALF_FLOAT_OES
#define GL_BGRA GL_BGRA_EXT
#define GL_RGBA32F_ARB GL_RGBA #define GL_RGBA32F_ARB GL_RGBA
#define GL_BGRA GL_BGRA_EXT
typedef unsigned short GLhalf; typedef unsigned short GLhalf;

View File

@@ -16,6 +16,7 @@
#include "helpers.h" #include "helpers.h"
#include "gl_headers.h" #include "gl_headers.h"
#include "CL/cl_half.h"
#define CHECK_ERROR()\ #define CHECK_ERROR()\
{GLint __error = glGetError(); if(__error) {log_error( "GL ERROR: %s!\n", gluErrorString( err ));}} {GLint __error = glGetError(); if(__error) {log_error( "GL ERROR: %s!\n", gluErrorString( err ));}}

View File

@@ -15,11 +15,6 @@ set (${MODULE_NAME}_SOURCES
../../test_common/gles/helpers.cpp ../../test_common/gles/helpers.cpp
) )
if(ANDROID) list(APPEND CLConform_LIBRARIES EGL GLESv2)
list(APPEND CLConform_LIBRARIES GLESv2)
elseif(WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGLES3")
list(APPEND CLConform_LIBRARIES libEGL libGLESv2 )
endif(ANDROID)
include(../CMakeCommon.txt) include(../CMakeCommon.txt)

View File

@@ -62,8 +62,8 @@ TEST_FN_REDIRECTOR( renderbuffer_read )
TEST_FN_REDIRECTOR( renderbuffer_write ) TEST_FN_REDIRECTOR( renderbuffer_write )
TEST_FN_REDIRECTOR( renderbuffer_getinfo ) TEST_FN_REDIRECTOR( renderbuffer_getinfo )
#ifndef GL_ES_VERSION_2_0 #ifdef GL_ES_VERSION_3_0
TEST_FN_REDIRECTOR( test_fence_sync ) TEST_FN_REDIRECTOR(fence_sync)
#endif #endif
test_definition test_list[] = { test_definition test_list[] = {
@@ -82,14 +82,17 @@ test_definition test_list[] = {
TEST_FN_REDIRECT( renderbuffer_getinfo ) TEST_FN_REDIRECT( renderbuffer_getinfo )
}; };
#ifndef GL_ES_VERSION_2_0 #ifdef GL_ES_VERSION_3_0
test_definition test_list32[] = { test_definition test_list32[] = {
TEST_FN_REDIRECT( fence_sync ) TEST_FN_REDIRECT( fence_sync )
}; };
#endif #endif
const int test_num = ARRAY_SIZE( test_list ); const int test_num = ARRAY_SIZE( test_list );
#ifdef GL_ES_VERSION_3_0
const int test_num32 = ARRAY_SIZE( test_list32 ); const int test_num32 = ARRAY_SIZE( test_list32 );
#endif
int main(int argc, const char *argv[]) int main(int argc, const char *argv[])
@@ -113,12 +116,15 @@ int main(int argc, const char *argv[])
for( int i = 0; i < test_num; i++ ) for( int i = 0; i < test_num; i++ )
log_info( "\t%s\n", test_list[i].name ); log_info( "\t%s\n", test_list[i].name );
#ifdef GL_ES_VERSION_3_0
log_info( "Available 3.2 tests:\n" ); log_info( "Available 3.2 tests:\n" );
for( int i = 0; i < test_num32; i++ ) for( int i = 0; i < test_num32; i++ )
log_info( "\t%s\n", test_list32[i].name ); log_info( "\t%s\n", test_list32[i].name );
#endif
log_info( "Note: Any 3.2 test names must follow 2.1 test names on the command line." ); log_info("Note: Any 3.2 test names must follow 2.1 test names on the "
log_info( "Use environment variables to specify desired device." ); "command line.");
log_info("Use environment variables to specify desired device.");
return 0; return 0;
} }
@@ -141,12 +147,14 @@ int main(int argc, const char *argv[])
// Check to see if any 2.x or 3.2 test names were specified on the command line. // Check to see if any 2.x or 3.2 test names were specified on the command line.
unsigned first_32_testname = 0; unsigned first_32_testname = 0;
#ifdef GL_ES_VERSION_3_0
for (int j=1; (j<argc) && (!first_32_testname); ++j) for (int j=1; (j<argc) && (!first_32_testname); ++j)
for (int i = 0; i < test_num32; ++i) for (int i = 0; i < test_num32; ++i)
if (strcmp(test_list32[i].name, argv[j]) == 0 ) { if (strcmp(test_list32[i].name, argv[j]) == 0 ) {
first_32_testname = j; first_32_testname = j;
break; break;
} }
#endif
// Create the environment for the test. // Create the environment for the test.
GLEnvironment *glEnv = GLEnvironment::Instance(); GLEnvironment *glEnv = GLEnvironment::Instance();
@@ -322,7 +330,7 @@ int main(int argc, const char *argv[])
error = -1; error = -1;
goto cleanup; goto cleanup;
} }
#ifdef GL_ES_VERSION_2_0 #ifndef GLES3
log_info("Cannot test OpenGL 3.2! This test was built for OpenGL ES 2.0\n"); log_info("Cannot test OpenGL 3.2! This test was built for OpenGL ES 2.0\n");
error = -1; error = -1;
goto cleanup; goto cleanup;

View File

@@ -112,11 +112,17 @@ public:
size_t dev_size; size_t dev_size;
cl_int status; cl_int status;
status = clGetGLContextInfoKHR(properties, clGetGLContextInfoKHR_fn GetGLContextInfo =
CL_DEVICES_FOR_GL_CONTEXT_KHR, (clGetGLContextInfoKHR_fn)clGetExtensionFunctionAddressForPlatform(
sizeof(devices), _platform, "clGetGLContextInfoKHR");
devices, if (GetGLContextInfo == NULL)
&dev_size); {
print_error(status, "clGetGLContextInfoKHR failed");
return NULL;
}
status = GetGLContextInfo(properties, CL_DEVICES_FOR_GL_CONTEXT_KHR,
sizeof(devices), devices, &dev_size);
if (status != CL_SUCCESS) { if (status != CL_SUCCESS) {
print_error(status, "clGetGLContextInfoKHR failed"); print_error(status, "clGetGLContextInfoKHR failed");
return NULL; return NULL;
@@ -124,11 +130,9 @@ public:
dev_size /= sizeof(cl_device_id); dev_size /= sizeof(cl_device_id);
log_info("GL _context supports %d compute devices\n", dev_size); log_info("GL _context supports %d compute devices\n", dev_size);
status = clGetGLContextInfoKHR(properties, status =
CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR, GetGLContextInfo(properties, CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR,
sizeof(devices), sizeof(devices), devices, &dev_size);
devices,
&dev_size);
if (status != CL_SUCCESS) { if (status != CL_SUCCESS) {
print_error(status, "clGetGLContextInfoKHR failed"); print_error(status, "clGetGLContextInfoKHR failed");
return NULL; return NULL;
@@ -164,9 +168,12 @@ public:
// Check all devices, search for one that supports cl_khr_gl_sharing // Check all devices, search for one that supports cl_khr_gl_sharing
for (int i=0; i<(int)num_of_devices; i++) { for (int i=0; i<(int)num_of_devices; i++) {
if (!is_extension_available(devices[i], "cl_khr_gl_sharing"){ if (!is_extension_available(devices[i], "cl_khr_gl_sharing"))
{
log_info("Device %d of %d does not support required extension cl_khr_gl_sharing.\n", i+1, num_of_devices); log_info("Device %d of %d does not support required extension cl_khr_gl_sharing.\n", i+1, num_of_devices);
} else { }
else
{
log_info("Device %d of %d supports required extension cl_khr_gl_sharing.\n", i+1, num_of_devices); log_info("Device %d of %d supports required extension cl_khr_gl_sharing.\n", i+1, num_of_devices);
interop_devices++; interop_devices++;
} }

View File

@@ -297,7 +297,7 @@ public:
virtual void * IRun( void ) virtual void * IRun( void )
{ {
cl_int error = run_cl_kernel( mKernel, mQueue, mStream0, mStream1, mRowIdx, mFenceEvent, mNumThreads ); cl_int error = run_cl_kernel( mKernel, mQueue, mStream0, mStream1, mRowIdx, mFenceEvent, mNumThreads );
return (void *)error; return (void *)(intptr_t)error;
} }
}; };