cl / gl interop:clCreateFromGLTexture2D,GLIntercept在AMD FUSION上失败

时间:2012-05-11 22:36:08

标签: opengl opencl gpu amd-processor

我有一个clgl interop可执行文件正在调用clCreateFromGLTexture2D。它失败了......

clCreateFromGLTexture2D( 0x06691828, CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, 1, CL_INVALID_GL_OBJECT ) = 0x00000000

我正在使用GLIntercept。这里。所以我在这里使用GLIntercept生成的Opengl32.dll ... 好吧,它可以在Nvidia GTX上运行并且可以独立运行而不会拦截AMD FUSION和AMD Radeon GPU。但是,在使用开源GLIntercept时失败。

如果您对下载和重新创建问题感兴趣,可以在那里发布clgl互操作测试代码。

有没有人知道如何修复它? 以下是我的调试日志中的一些陈述......如果有帮助..

如果您有兴趣下载我正在使用的测试样本clgl互操作代码,我创建了一个开放的issue/ticket on GLIntercept code website ...

glutInit(  ) = 
glutInitDisplayMode( 12 ) 
glutInitWindowSize( 320, 258 ) 
wglChoosePixelFormat( 38010929, 001EF950 PIXELFORMATDESCRIPTOR {  nSize 28 nVersion 1 dwFlags 25  PFD_DOUBLEBUFFER  PFD_DRAW_TO_WINDOW  PFD_SUPPORT_OPENGL  iPixelType PFD_TYPE_RGBA cColorBits   cRedBits  cRedShift   cGreenBits  cGreenShift   cBlueBits  cBlueShift   cAlphaBits   cAlphaShift   cAccumBits   cAccumRedBits   cAccumGreenBits   cAccumBlueBits   cAccumAlphaBits   cDepthBits   cStencilBits   } 28 ) = 0x2
wglGetCurrentContext(  ) = 0x00000000
wglGetCurrentDC(  ) = 0x00000000
glutCreateWindow( OpenGL-CL interraction! ) = 0x1
glClearColor( 0, 0, 0, 0 ) 
glEnable( b71 ) 
glEnable( de1 ) 
glGenTextures( 1, 0125B194 { 1}  ) 
glBindTexture( de1, 1 ) 
glTexEnvi( 2300, 2200, 1e01 ) 
glTexParameteri( de1, 2801, 2600 ) 
glTexParameteri( de1, 2800, 2600 ) 
glTexImage2D( de1, 0, 8058, 100, 100, 0, 1908, 1401, 00C2E858 ) 
glBindTexture( de1, 0 ) 
clGetPlatformIDs( 0, NULL, 1 ) = CL_SUCCESS
clGetPlatformIDs( 1, 05744514, NULL ) = CL_SUCCESS
clGetDeviceIDs( 05744514, CL_DEVICE_TYPE_GPU, 1, 04516F40 , NULL ) = CL_SUCCESS
clGetDeviceInfo( 0x04516F40, CL_DEVICE_NAME, 400, BeaverCreek, NULL ) = CL_SUCCESS
clGetDeviceInfo( 0x04516F40, CL_DEVICE_EXTENSIONS, 400, cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt cl_khr_d3d10_sharing , NULL ) = CL_SUCCESS
wglGetCurrentContext(  ) = 0x00020000
wglGetCurrentDC(  ) = 0x38010929
wglGetCurrentContext(  ) = 0x00020000
clCreateContext( 8200  0x20000  8203  0x38010929  4228  0x5744514, 1, 04516F40 , NULL, NULL, CL_SUCCESS ) = 0x06A30828
clCreateCommandQueue( 0x06A30828, 0x04516F40, 0, CL_SUCCESS ) = 0x06A69900
clCreateProgramWithSource( 0x06A30828, 1, C:\Users\inteltc\Documents\clgl_latest\Debug\clgl_1.program, CL_SUCCESS ) = 0x06A6B9F8
clBuildProgram( 0x06A6B9F8, 0, NULL, NULL, NULL, NULL ) = CL_SUCCESS
clCreateKernel( 0x06A6B9F8, kernel1, CL_SUCCESS ) = 0x045266E0
clCreateFromGLTexture2D( 0x06A30828, CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, , 0, 1, CL_INVALID_GL_OBJECT ) = 0x00000000

1 个答案:

答案 0 :(得分:0)

我没有看到你为你的纹理对象调用glTexImage2D,这基本上没有定义纹理宽度,高度和mipmaps,所以很明显它失败的原因。