小编Ale*_*rth的帖子

如何在 NVidia 桌面上创建 EGL 上下文

我正在寻找一个代码片段来在桌面 NVidia 上创建 EGL 上下文。

我知道在 Windows 上,NVidia 通过扩展WGL_EXT_create_context_es_profileWGL_EXT_create_context_es2_profile公开 EGL 。

在 Linux 上,NVidia 允许通过GLX_EXT_create_context_es_profileGLX_EXT_create_context_es2_profile扩展进行 EGL。

但我无法找到示例或示例代码来让它运行。

linux desktop nvidia windows-7 egl

5
推荐指数
1
解决办法
2963
查看次数

Vulkan的VkMemoryHeapFlagBits缺少价值吗?

在Vulkan specs 1.0.9(第180页)中,我们有以下内容:

typedef struct VkMemoryHeap {
  VkDeviceSize size;
  VkMemoryHeapFlags flags;
} VkMemoryHeap;
Run Code Online (Sandbox Code Playgroud)

而这个描述:

•size是堆中的总内存大小(以字节为单位).

•flags是堆的属性标志的位掩码.flags中指定的位是:

typedef enum VkMemoryHeapFlagBits {
VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
} VkMemoryHeapFlagBits;
Run Code Online (Sandbox Code Playgroud)

但是当我查询时,我的VkPhysicalDeviceMemoryProperties 标志零值.我的代码与Vulkan SDK vkjson_info.exe工具的输出相匹配,后者从我的GPU输出一个带有属性的JSON文件.

这里缺少什么?

memory enumeration vulkan

5
推荐指数
1
解决办法
131
查看次数

使用malloc/free()实现Vulkan的VkAllocationCallbacks

我正在阅读Vulkan内存分配 - 内存主机,似乎可以使用天真的malloc/realloc/free函数实现VkAllocationCallbacks.

typedef struct VkAllocationCallbacks {
   void*                                   pUserData;
   PFN_vkAllocationFunction                pfnAllocation;
   PFN_vkReallocationFunction              pfnReallocation;
   PFN_vkFreeFunction                      pfnFree;
   PFN_vkInternalAllocationNotification    pfnInternalAllocation;
   PFN_vkInternalFreeNotification          pfnInternalFree;
} VkAllocationCallbacks;
Run Code Online (Sandbox Code Playgroud)

但我发现实现自己的vkAllocationCallback只有两个可能的原因:

  • 通过Vulkan API记录和跟踪内存使用情况;
  • 实现一种堆内存管理,它是一大块内存,可以反复使用和重用.显然,它可能是一种过度杀伤并遭受托管内存的同类问题(如在Java JVM中).

我在这里错过了什么吗?什么样的应用程序值得实现vkAllocationCallbacks?

memory memory-management vulkan

3
推荐指数
1
解决办法
1839
查看次数

正确长度的VkPipelineMultisampleStateCreateInfo.pSampleMask

与其他Vulkan的结构不同,其中所有结构都type pArrayName*;具有uint32_t arrayNameCount数组长度的伴随,struct VkPipelineMultisampleStateCreateInfo不定义任何sampleMaskCountfor字段const VkSampleMask* pSampleMask;.

福尔康文档说,关于有效使用下列内容:

"如果pSampleMask不是NULL,则pSampleMask必须是指向⌈rasterizationSamples/32⌉VkSampleMask值数组的指针."

但是 VkSampleCountFlagBits rasterizationSamples;有点价值:

rasterizationSamples是一个VkSampleCountFlagBits,指定光栅化中使用的每个像素的样本数.

到现在为止还挺好.

但是VkSampleCountFlagBits是2个幂的枚举,范围从0x01到0x40(或01到64十进制).可能的ANDed值的范围可以是01到127.所以我想从1到31的按位值将导致a pSampleMask 长度为0; 从32到63的值将给出长度2,依此类推.

那是对的吗 ?我真的很笨!

c graphics vulkan

2
推荐指数
1
解决办法
93
查看次数