问题标签 [spir-v]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
393 浏览

vulkan - 生成的 SPIR-V 代码有什么问题以及如何验证它?

我有一些生成的 SPIR-V 代码,我想与 vulkan API 一起使用。但是我 Exception thrown at 0x00007FFB68D933CB (nvoglv64.dll) in vulkanCompute.exe: 0xC0000005: Access violation reading location 0x0000000000000008.在尝试使用vkCreateComputePipelines.

API 调用应该没问题,因为相同的代码适用于使用glslangValidator编译的着色器。因此,我假设生成的 SPIR-V 代码一定是格式错误的。

我已经使用khronos 的验证器工具检查了 SPIR-V 代码,使用spirv-val --target-env vulkan1.1 mainV.spv它退出时没有错误。无论如何,也知道这个工具仍然不完整。

我还尝试使用Radeon GPU Analyzer来编译我的 SPIR-V 代码,该代码也可以在着色器游乐场在线获得,并且该工具会抛出Error: Error: internal error: Bil::BilInstructionConvert::Create(60) Code Not Tested!实际上没有帮助的错误,但鼓励假设代码格式错误。

不幸的是,SPIR-V 代码很长时间无法在此处发布,但它位于着色器操场的链接中。

有谁知道我的设置有什么问题,或者知道如何以更好的方式验证我的 SPIR-V 代码,而无需手动检查所有 700 行代码。

我认为问题不存在,但无论如何这里是 c++ 主机代码:

0 投票
1 回答
210 浏览

c++ - 伏尔甘;从 SPIR-V 着色器获取制服和属性列表

为此寻找 Vulkan 替代方案;在 OpenGL 中,有没有办法获取着色器程序使用的所有制服和属性的列表?

0 投票
1 回答
2168 浏览

opengl - 我怎样才能简单地将 GLSL 编译为 SPIR-V?

所以我需要得到一些GLSL的SPIR-V代码

我能找到的关于该主题的每一个资源都涉及为图形等设置一个完整的环境。

在最简单的情况下,当我有一些 GLSL 代码并且我想获得 SPIR-V 代码时,最好的方法是什么?

0 投票
1 回答
271 浏览

glsl - 错误:“子组操作”:需要 SPIR-V 1.3

我正在使用以下命令将 GLSL 文件编译为 SPIR-V:

得到错误:

错误发生在第 32 行和第 45 行,它们都是sum = subgroupAdd(sum);

完整的GLSL 代码

我有最新版本的 VulkanSDK。

0 投票
0 回答
137 浏览

opengl - GLSL / HLSL / SPIR-V 中的 _pdep_u32

我需要在将编译为 SPIR-V 的 GLSL 程序中交错*三个无符号整数的位。在 C 语言中,我会使用内在的 _pdep_u32 但我在 OpenGL 参考中找不到类似的东西。它是否以其他名称存在?或者,它是否存在于 HLSL 或原始 SPIR-V 中?我知道有一个工具可以将 LLVM IR 转换为 SPIR-V。是否可以使用它来生成 _pdep_u32 等效字节码?否则,这种行为能否以其他也非常快的方式实现?

*即 32 位整数 A、B 和 C 中的位必须按 ABCABC...等顺序出现

0 投票
1 回答
199 浏览

glsl - glslc - 即使使用 -fentry-point 也缺少入口点

使用glslc --targe-env="vulkan1.1" -fentry-point="mainColor" test.frag时出现错误

test.frag 内容:

我究竟做错了什么 ?
如何修复此编译错误?

0 投票
1 回答
131 浏览

vulkan - 使用 Vulkan + OpenXR,在任务中获得奇怪的透明度结果(PCVR 中不存在)

长话短说,alpha 值的表现非常奇怪:合理地在 1.0 到 0.5 之间过渡,但从 0.5 到 0.0 从半不透明-{颜色}过渡到不透明-黑色。

在此处输入图像描述

^ 这是我的字体渲染器(从发送到 iphone 的任务中捕获)替换了着色器。它应该根据片段 x 坐标的 sin 显示淡入和淡出透明度的红色四边形,而不是显示字体。我不知道“黑色”是从哪里来的。这是着色器:

我的管道混合配置是:

最古怪的是,当从 pcvr 运行时,它可以完美地工作(如预期的那样)(两者之间的代码路径没有重大差异:相同的 spirv、相同的管道生成等......)

0 投票
1 回答
212 浏览

spir-v - 如何读取 SPIR-V 文件?

我在将一些 GLSL 代码编译为 SPIR-V 时遇到问题,因此我想检查 SPIR-V 代码。

我希望能够通读程序集。

我怎样才能做到这一点?

0 投票
1 回答
97 浏览

glsl - 获取“位置”:使用 glslang 时片段输出错误太大

我在我的代码中使用 glslang SDK 在线编译着色器程序,但是我的片段着色器出现以下错误:

GLSL 解析失败:Text.frag 错误:0:6:“位置”:片段输出太大错误:1 编译错误。没有生成代码。

GLSL 链接失败:Text.frag 错误:0:6:“位置”:片段输出太大错误:1 编译错误。没有生成代码。

断言失败:node->getOp(),文件 C:\projects\glslang\SPIRV\GlslangToSpv.cpp,第 2412 行

我的顶点着色器:

我的片段着色器

0 投票
1 回答
408 浏览

glsl - 如何将 uint64_t 转换为 sampler2D?

我想使用无绑定纹理,但 spirv 不支持它。我在这里找到:https : uint64_t//www.khronos.org/opengl/wiki/Bindless_Texture 可以转换为sampler2D。

uint64_t 值可以使用构造函数转换为任何采样器或图像类型:sampler2DArray(some_uint64)。它们也可以转换回 64 位整数。

我认为我可以上传一个无绑定句柄作为 uint64_t,然后将其转换为 sampler2D。

spir-v 编译器给了我错误:

着色器代码

是否可以转换uint64_tsampler2D?怎么做?