当前位置: 首页 > 知识库问答 >
问题:

clCreateFromGLTexture()仅在某些平台上返回CL_INVALID_CONTEXT

禹德水
2023-03-14

在使用以下方法积极创建OpenGL和OpenCL之间的共享上下文后:

cl_context_properties cps[] = {
    CL_GL_CONTEXT_KHR,
    (cl_context_properties)glXGetCurrentContext(),
    CL_GLX_DISPLAY_KHR,
    (cl_context_properties)glXGetCurrentDisplay(),
    CL_CONTEXT_PLATFORM,
    (cl_context_properties)platform_id,
    0
};

// Create an OpenCL context
m_contextCL = clCreateContext( cps, 1, &device_id, NULL, NULL, &err);
cl_mem mem = clCreateFromGLTexture(
            m_contextCL ,
            CL_MEM_READ_ONLY ,
            GL_TEXTURE_2D ,
            0 ,
            qt_fbo->texture() ,
            &err
            );

然而,当尝试它在东芝笔记本电脑上与英特尔HD Graphics 520在Manjaro操作系统和Beignet OpenCL实现。clCreateFromGLTexture(...)返回CL_INVALID_CONTEXT失败,此外,我尝试了使用Intel SDK和Beignet OpenCl的Ubuntu16.04和Intel Iris IGP(集成图形处理器)的另一个平台。它在创建共享纹理的同一点失败。

我创建了用于比较两种GPU技术(OpenGL和OpenCL)及其与Qt:
https://github.com/pietrzakmat/opengl-opencl-qt-interop的互操作性的最小工作示例。
所有步骤都源自两个教程:
1。https://www.codeproject.com/articles/685281/opengl-opencl-interoperability-a-case-study-using
2。https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorial

任何人都可以指出我做错了什么,为什么在集成图形或IGP英特尔CPU的平台上创建共享纹理失败?这是驱动程序或OpenCL实现的问题吗?我成功地构建并运行了Beignet或intel_ocl_examples中包含的示例,因此我认为安装是正确的。

共有1个答案

甄伟兆
2023-03-14

1)是否支持cl_khr_gl_sharing扩展?是否尝试在Windows平台/macos for Intel GPU上使用此代码?2)是否尝试使用texture而不附加到FBO?

无论如何,我认为这是OpenCL在Linux平台上实现的问题。

 类似资料:
  • 和onActivityResult 和错误的堆栈跟踪 stack_trace=java.lang.runtimeException:未能将结果ResultInfo{who=null,request=1,result=-1,data=intent{act=inline-data(havs extras)}}传递到活动{com.madhours/com.madhours.activities.acti

  • 问题内容: 我正在使用Elasticsearch索引我的文档。 是否有可能指示它仅返回特定字段,而不是它存储的整个json文档? 问题答案: 是的 使用源过滤器。如果您使用JSON搜索,它将看起来像这样: 在ES 2.4及更低版本中,您还可以在search API中 使用fields选项: ES 5+中已弃用此功能。而且,源过滤器更强大!

  • 我的Android应用程序无法安装在一些“随机”、较旧的API设备上(任何低于API级别25的设备),错误如下: 所以,基本上看起来… API 我见过类似的问题,答案与小写的包名有关。我已经有了。 有人有什么想法吗? 舱单: BTW我用的是Visual Studio 2019和一夫一妻制3.7

  • 我试图在我的应用程序中解码AAC编码的文件,并初始化用于初始化我的对象的对象,这是为对象设置变量的代码 我面临的问题是语句为某些设备上的同一文件获取我。该应用程序正在生产中,我在android API级别为17、18和19的处理器设备上看到了这个错误,大多数错误都发生在三星设备上。有什么方向吗?

  • 问题内容: 我看到Google Play中与Fabric / Crashlytics相关的崩溃。从正常的Crashlytics更新到新的Fabric Crashlytics之后,发生了这种情况。我只能在其中一台设备(Galaxy S2)上重现它。我拥有的所有其他设备(Nexus 5和S4)都没有崩溃。这是堆栈跟踪: 这是我的build.gradle的内容: 问题答案: 我只是凭直觉就知道了!升级到

  • 根据我的理解,默认情况下,导航到任何页面后都会出现一个向后箭头。有没有办法不在我选择的某一页上包括后面的箭头?