ETH官方钱包

前往
大廳
主題

dxvk for Soulworker(~v2.3)

EcuasYos | 2023-10-22 03:08:20 | 巴幣 0 | 人氣 323

接續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

創作回應

更多創作