Use glFinish to replace glFlush (#1102)

In OpenCL spec 1.1:
"Prior to calling clEnqueueAcquireGLObjects, the application must ensure that any pending GL
operations which access the objects specified in mem_objects have completed. This may be
accomplished portably by issuing and waiting for completion of a glFinish command on all GL
contexts with pending references to these objects."

Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
This commit is contained in:
AlexBinXie
2021-01-14 08:27:45 -05:00
committed by GitHub
parent e5f89249fa
commit 0b6fbd15d1
2 changed files with 5 additions and 5 deletions

View File

@@ -184,7 +184,7 @@ int test_buffer_kernel(cl_context context, cl_command_queue queue, ExplicitType
glBufferData( GL_ARRAY_BUFFER, bufferSize, outDataGL, GL_STATIC_DRAW );
glBindBuffer( GL_ARRAY_BUFFER, 0 );
glFlush();
glFinish();
/* Generate some streams. The first and last ones are GL, middle one just vanilla CL */

View File

@@ -287,10 +287,10 @@ int test_image_format_methods( cl_device_id device, cl_context context, cl_comma
error = clSetKernelArg( kernel, 1, sizeof( outDataBuffer ), &outDataBuffer );
test_error( error, "Unable to set kernel argument" );
// Flush and Acquire.
glFlush();
error = (*clEnqueueAcquireGLObjects_ptr)( queue, 1, &image, 0, NULL, NULL);
test_error( error, "Unable to acquire GL obejcts");
// Finish and Acquire.
glFinish();
error = (*clEnqueueAcquireGLObjects_ptr)(queue, 1, &image, 0, NULL, NULL);
test_error(error, "Unable to acquire GL obejcts");
size_t threads[1] = { 1 }, localThreads[1] = { 1 };