问题标签 [direct3d12]

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 投票
2 回答
2925 浏览

synchronization - 如何在 DirectX / Direct3D 12 中使用栅栏同步 CPU 和 GPU?

我开始学习 Direct3D 12 并且难以理解 CPU-GPU 同步。据我了解,栅栏(ID3D12Fence)不过是用作计数器的 UINT64(无符号长长)值。但它的方法让我感到困惑。以下是 D3D12 示例的部分源代码。( https://github.com/d3dcoder/d3d12book )

据我了解,这部分正在尝试“刷新”命令队列,这基本上是让 CPU 等待 GPU 直到达到给定的“围栏值”,以便 CPU 和 GPU 具有相同的围栏值。

问:如果这个 Signal() 是一个让 GPU 更新给定 ID3D12Fence 内的栅栏值的函数,为什么需要那个 mCurrentFence 值?

根据 Microsoft Doc,它说“将栅栏更新为指定值”。什么指定值?我需要的是“获取最后完成的命令列表值”,而不是设置或指定。这个指定的值是干什么用的?

对我来说,它似乎必须像

如果 m_Fence->GetCompletedValue() 为 0,

如果 (0 < 1)

GPU 还没有操作命令列表(索引 0),那么 CPU 必须等到 GPU 跟进。那么调用 SetEventOnCompletion、WaitForSingleObject 等就有意义了。

如果 (1 < 1)

GPU 已完成命令列表(索引 0),因此 CPU 无需等待。

在执行命令列表的地方增加 mCurrentFence。

0 投票
1 回答
132 浏览

c++ - Direct3D 12.0 上的“映射默认缓冲区”是什么?

https://docs.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-devices-downlevel-intro上,我看到了“地图默认缓冲区”功能,这是自功能级别 11_0 以来的可选功能. 我能用这个做什么?哪些优势提供了此功能?哪些 GPU 支持它?

0 投票
1 回答
484 浏览

c++ - 在 Direct3D 12 中的描述符范围内设置多个描述符

首先,我对描述符范围的理解是,我可以指定着色器可能使用的多个缓冲区(在我的情况下为常量缓冲区),对吗?如果不是,那么这就是我的误解所在,剩下的问题将毫无意义。

假设我想在我的顶点着色器中传递几个常量缓冲区

无论出于何种原因,我想使用描述符范围来指定 b0 和 b1。我填写了一个 D3D12_DESCRIPTOR_RANGE:

然后我继续将其推入根参数

根参数进入我的签名描述

在此之后创建我的根签名等等。我还为 2 个描述符创建了一个堆

然后我映射了各自的 ID3D12Resource 以获得两个指针,以便我可以将我的值存储到它们。

问题是当我想将它们送入管道时。渲染时,我使用了

我得到的结果是只有 register(b0) 得到了正确的值,而 register(b1) 保持未初始化。我做错了什么?

0 投票
1 回答
128 浏览

direct3d12 - 如何在 D3D12 中获取有关 GPU 的物理规格

如何在 D3D12 中获取 GPU 的物理规格(内存大小等)?(这对于激活/停用特定 GPU 规格的某些功能很有用)

0 投票
1 回答
286 浏览

direct3d12 - D3D12 平铺资源第 4 层

https://docs.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_tiled_resources_tier上有四个可能的平铺资源层。但是第四层与其他层相比没有记录,所以我无法弄清楚这一层的用途。第 4 层提供了哪些附加功能?哪些 GPU 支持第 4 层?从哪个 Shader Model/Windows 10/WDDM 版本开始,此层可用?

0 投票
1 回答
292 浏览

direct3d12 - D3D12 功能级别 12_2/终极其他功能

DirectX 12 Ultimate/Feature Level 12_2 主要是关于 DXR Tier 1.1、Mesh Shader、Sampler Feedback 和 Variable Rate Shading。但是其他功能的情况如何,例如地图默认缓冲区、着色器指定的模板参考值或保守光栅化和平铺资源所需的更高层?那里的要求会保持不变还是会发生变化?

0 投票
1 回答
189 浏览

buffer - Direct3D 12 中的 W-Buffer(ing)

D3D10 Docs 上有一个列表,其中显示了从 D3D9 到 D3D10 的已弃用功能。它说不再支持 W 缓冲,我们应该改用高精度深度缓冲区/Z 缓冲区。我怀疑 Direct3D 11 和 12 也没有(完全)支持它。但是有没有办法在 Direct3D 12 中使用 W 缓冲区?

0 投票
1 回答
207 浏览

direct3d - 检索 D3D12 视频解码状态

我正在通过 Direct3D 12 API 实现 H264 视频解码器——虽然我对 Direct3D 很陌生,但我确实有其他图形 API 和 H264 的经验。我一直在努力寻找像样的 D3D12 视频解码示例,但似乎成功地将我的作品提交给解码器。

但是,我不知道如何查询解码状态。通过将文档和其他一些代码拼凑在一起,我发现我认为它是这样的——将结果映射到状态结构中——但我得到一个无效的参数错误。谁能指出我正确的方向,任何 D3D12 视频解码的好例子都将是一个很好的资源。

0 投票
1 回答
805 浏览

c++ - 在 D3D12 上获取显示器的刷新率

我正在将我的代码从 D3D11 移植到 D3D12,并且我正在尝试在 D3D12 上获取显示器的刷新率。我使用刷新率来进行精确的动画计时(这是一个硬性要求)。此代码适用于 D3D11:

不幸的是,ID3D12Device 没有实现 IDXGIDevice 接口,因此 FindClosestMatchingMode1 失败并出现以下错误:

使用D3D12时有没有办法获取IDXGIDevice?或者,如何确定 D3D12 上的显示刷新率?

但是我知道EnumDisplaySettings它返回一个整数,因此缺乏精度,导致动画漂移。但是,我还发现DwmGetCompositionTimingInfo,它似乎只支持获取主监视器的信息。

我还需要一个适用于传统 Win32 和 UWP 应用程序的解决方案。如果需要,我愿意为不同的应用程序模型使用两个代码路径。

0 投票
0 回答
312 浏览

yuv - 如何使用 Direct3D 12 将单个纹理从 RGBA 转换为 NV12?

github上有一个没用的D3D12示例代码项目 https://github.com/microsoft/D3D12TranslationLayer

停留在 CreateVideoProcessor 的步骤

如何通过directx12将rgba纹理转换为nv12纹理?

(平台为Windows 1909)