clEnqueueAcquireGLObjects 上的 CL_INVALID_OPERATION [关闭]

问题描述 投票:0回答:0

我从“developer.nvidia.com/opencl”下载了“OpenCL Marching Cubes Isosurfaces”示例并成功编译了它。但是,它执行时出现以下错误:

        !!! Error # -59 (CL_INVALID_OPERATION) at line 863 , in file oclMarchingCubes.cpp !!!

oclMarchingCubes.cpp 的第 858-864 行

    
         // generate triangles, writing to vertex buffers
            if( g_glInterop ) {
                // Acquire PBO for OpenCL writing
                glFlush();
                ciErrNum =  clEnqueueAcquireGLObjects(cqCommandQueue, 2, interopBuffers, 0, 0, 0);
                oclCheckErrorEX(ciErrNum, CL_SUCCESS, pCleanup);
            }

推测是opencl获取PBO写失败

    ciErrNum = clEnqueueAcquireGLObjects(cqCommandQueue, 2, interopBuffers, 0, 0, 0);

可是,怎么解决呢?

下面是运行 gdb clEnqueueAcquireGLObjects 的屏幕输出:

```
 ...loading Scan.cl
 ...creating scan program
 ...building scan program
 ...creating scan kernels
 ...checking minimum supported workgroup size
 ...allocating internal buffers
grid: 32 x 32 x 32 = 32768 voxels
max verts = 102400
Read './src/oclMarchingCubes/data/Bucky.raw', 32768 bytes

 !!! Error # -59 (CL_INVALID_OPERATION) at line 863 , in file oclMarchingCubes.cpp !!!

[oclMarchingCubes] test results...
FAILED
> exiting in 3 seconds: 3...2...1...done!

bin/linux/release/oclMarchingCubes Exiting...
Press <Enter> to Quit
----------------------
```
c++ opengl interop opencl nvidia
© www.soinside.com 2019 - 2024. All rights reserved.