接續dxvk for soulworker (~v1.9)
commit b34421b055df5c81192faac800906be5985fe175 (HEAD)
Author: Philip Rebohle <[email protected]>
Date: Mon Jul 4 16:13:06 2022 +0200
[dxvk] Always enable extendedDynamicState feature
this commit break the displaying.
diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp
index b66169d8..261752da 100644
--- a/src/dxvk/dxvk_context.cpp
+++ b/src/dxvk/dxvk_context.cpp
@@ -19,9 +19,6 @@ namespace dxvk {
m_gfxBarriers (DxvkCmdBuffer::ExecBuffer),
m_queryManager(m_common->queryPool()),
m_staging (device, StagingBufferSize) {
- if (m_device->features().extExtendedDynamicState.extendedDynamicState)
- m_features.set(DxvkContextFeature::ExtendedDynamicState);
-
// Init framebuffer info with default render pass in case
// the app does not explicitly bind any render targets
m_state.om.framebufferInfo = makeFramebufferInfo(m_state.om.renderTargets);
@@ -4988,13 +4985,8 @@ namespace dxvk {
// Vertex bindigs get remapped when compiling the
// pipeline, so this actually does the right thing
- if (m_features.test(DxvkContextFeature::ExtendedDynamicState)) {
- m_cmd->cmdBindVertexBuffers2(0, m_state.gp.state.il.bindingCount(),
- buffers.data(), offsets.data(), lengths.data(), nullptr);
- } else {
- m_cmd->cmdBindVertexBuffers(0, m_state.gp.state.il.bindingCount(),
- buffers.data(), offsets.data());
- }
+ m_cmd->cmdBindVertexBuffers2(0, m_state.gp.state.il.bindingCount(),
+ buffers.data(), offsets.data(), lengths.data(), nullptr);
}
This look suspicious. So I revise lengths.data() to nullptr, and the problem fixed.
This works at v2.3 as well.
elwin@DESKTOP-A0VR4BU:~/dxvk/dxvk$ git diff
diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp
index 80c2620d..17109b64 100644
--- a/src/dxvk/dxvk_context.cpp
+++ b/src/dxvk/dxvk_context.cpp
@@ -5677,7 +5677,7 @@ namespace dxvk {
// Vertex bindigs get remapped when compiling the
// pipeline, so this actually does the right thing
m_cmd->cmdBindVertexBuffers(0, m_state.gp.state.il.bindingCount(),
- buffers.data(), offsets.data(), lengths.data(),
+ buffers.data(), offsets.data(), nullptr,
newDynamicStrides ? strides.data() : nullptr);
}
cmdBindVertexBuffers is only used here so I think this doesn't make other serious issues.
v2.3 demo dll download
Discussion at https://github.com/doitsujin/dxvk/issues/2973