opengl-es - 多上下文/多线程场景下GL_SYNC_FLUSH_COMMANDS_BIT和glFlush的区别
问题描述
我有一个多线程场景,其中一个用于渲染的前台 OpenGL 上下文和一个用于上传的背景 OpenGL 上下文,并激活了上下文资源共享。在后台线程发出 glBufferData 后,它使用 glFenceSync 创建一个栅栏,然后调用 glClientWaitSync 并设置 GL_SYNC_FLUSH_COMMANDS_BIT。然而,这似乎并不能保证刷新,因为主线程永远等待栅栏发出信号。只有用 glFlush 替换 glClientWaitSync 才能完成这项工作。
有人能告诉我为什么吗?
C++、Linux、GLES 3.2
问候
解决方案
有人能告诉我为什么吗?
最可能的答案是驱动程序有问题。根据规范GL_SYNC_FLUSH_COMMANDS_BIT
应该相当于插入 a glFlush()
,所以如果不是,这听起来像是一个实现问题。
推荐阅读
- sql - Liquibase的where标签中的两个条件
- javascript - How to fix sorting issue date in datatables column?
- c++ - 检查 std::filesystem::path 是否在目录中
- python-3.x - 它在 DF1 中而不在 DF 中,但仅匹配特定列
- python - 如何在python中全局定义一个列表
- python - 使用 Python ibm_db 包将时间戳更新为 DB2 中的当前时间戳
- python - 如何获取 Pandas Dataframe 的最后一行?
- algorithm - 如果我们在创建 Huffman Tree 时不一致会发生什么?
- android - 为什么 androidx.lifecycle.ViewModelProviders 在“android.arch.lifecycle:extensions”而不是“android.arch.lifecycle:viewmodel”?
- python - pyspark - 如何在分层随机抽样中使用(df.sampleByKey())选择每层的确切记录数