Made final adjustments

This commit is contained in:
cdozdil
2026-02-10 17:53:23 +03:00
parent e366b9885e
commit 4e8332741d
11 changed files with 23 additions and 113 deletions
+3 -3
View File
@@ -317,8 +317,8 @@ copy NUL "$(SolutionDir)x64\Release\a\!! EXTRACT ALL FILES TO GAME FOLDER !!" /Y
<ClInclude Include="hooks\Dxgi_Hooks.h" />
<ClInclude Include="hooks\FG_Hooks.h" />
<ClInclude Include="hooks\LibraryLoad_Hooks.h" />
<ClInclude Include="hooks\VulkanwDx12\CommandBuffer_StateTracker.h" />
<ClInclude Include="hooks\VulkanwDx12\VulkanwDx12_Hooks.h" />
<ClInclude Include="hooks\CommandBuffer_StateTracker.h" />
<ClInclude Include="hooks\VulkanwDx12_Hooks.h" />
<ClInclude Include="inputs\FSR2_Dx11.h" />
<ClInclude Include="inputs\FSR2_Vk.h" />
<ClInclude Include="inputs\XeSS_Dx11.h" />
@@ -532,7 +532,7 @@ copy NUL "$(SolutionDir)x64\Release\a\!! EXTRACT ALL FILES TO GAME FOLDER !!" /Y
<ClCompile Include="hooks\FG_Hooks.cpp" />
<ClCompile Include="hooks\Kernel_Hooks.cpp" />
<ClCompile Include="hooks\LibraryLoad_Hooks.cpp" />
<ClCompile Include="hooks\VulkanwDx12\VulkanwDx12_Hooks.cpp" />
<ClCompile Include="hooks\VulkanwDx12_Hooks.cpp" />
<ClCompile Include="inputs\FSR2_Dx11.cpp" />
<ClCompile Include="inputs\FSR2_Vk.cpp" />
<ClCompile Include="inputs\XeSS_Dx11.cpp" />
+3
View File
@@ -40,6 +40,9 @@
// Enables LOG_DEBUG_ONLY logs
// #define DETAILED_DEBUG_LOGS
// Enables Vulkan validation layers
// #define VULKAN_DEBUG_LAYER
// Enable D3D12 Debug Layers
// #define ENABLE_DEBUG_LAYER_DX12
+2
View File
@@ -1,8 +1,10 @@
#include "pch.h"
#include "Vulkan_Hooks.h"
#include <Util.h>
#include <Config.h>
#include <SysUtils.h>
#include <menu/menu_overlay_vk.h>
#include <proxies/KernelBase_Proxy.h>
@@ -1,3 +1,5 @@
#include <pch.h>
#include "VulkanwDx12_Hooks.h"
#include <State.h>
+1
View File
@@ -4,6 +4,7 @@
#include <Util.h>
#include <Config.h>
#include <SysUtils.h>
#include <imgui/imgui_impl_vulkan.h>
#include <imgui/imgui_impl_win32.h>
@@ -1,6 +1,10 @@
#include <pch.h>
#include "DT_Vk.h"
#include "precompile/dt_Shader_Vk.h"
#include "precompile/dt_int_Shader_Vk.h"
#include <Config.h>
// Helper function to determine if format is integer or float
@@ -1,3 +1,5 @@
#include <pch.h>
#include "RC_Vk.h"
#include <Config.h>
+2 -1
View File
@@ -2,9 +2,10 @@
#include "Vulkan_Spoofing.h"
#include <Config.h>
#include <SysUtils.h>
#include <proxies/KernelBase_Proxy.h>
#include <hooks/VulkanwDx12/VulkanwDx12_Hooks.h>
#include <hooks/VulkanwDx12_Hooks.h>
#include <magic_enum.hpp>
+4 -109
View File
@@ -1,11 +1,14 @@
#include <pch.h>
#include "IFeature_VkwDx12.h"
#include <Config.h>
#include <SysUtils.h>
#include <proxies/DXGI_Proxy.h>
#include <proxies/D3D12_Proxy.h>
#include <hooks/VulkanwDx12/VulkanwDx12_Hooks.h>
#include <hooks/VulkanwDx12_Hooks.h>
#include <detours/detours.h>
@@ -392,96 +395,6 @@ bool IFeature_VkwDx12::CreateVulkanCopyCommandBuffer()
return true;
}
// bool IFeature_VkwDx12::CopyVulkanImageToShared(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Resource_VK* InParam,
// VkImage InDestImage, bool IsDepth)
//{
// LOG_FUNC();
//
// VkImageAspectFlags aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
// if (IsDepth)
// aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
//
// // Transition source image to transfer src optimal
// VkImageMemoryBarrier srcBarrier = {};
// srcBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
// srcBarrier.oldLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
// srcBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
// srcBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// srcBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// srcBarrier.image = InParam->Resource.ImageViewInfo.Image;
// srcBarrier.subresourceRange = InParam->Resource.ImageViewInfo.SubresourceRange;
// srcBarrier.srcAccessMask = VK_ACCESS_SHADER_READ_BIT;
// srcBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
//
// vkCmdPipelineBarrier(InCmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0,
// nullptr, 0, nullptr, 1, &srcBarrier);
//
// // Transition dest image to transfer dst optimal
// VkImageMemoryBarrier dstBarrier = {};
// dstBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
// dstBarrier.oldLayout = VK_IMAGE_LAYOUT_GENERAL;
// dstBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
// dstBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// dstBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// dstBarrier.image = InDestImage;
// dstBarrier.subresourceRange = InParam->Resource.ImageViewInfo.SubresourceRange;
// dstBarrier.srcAccessMask = 0;
// dstBarrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
//
// vkCmdPipelineBarrier(InCmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0,
// nullptr,
// 0, nullptr, 1, &dstBarrier);
//
// // Copy image
// VkImageCopy copyRegion = {};
// copyRegion.srcSubresource.aspectMask = aspectMask;
// copyRegion.srcSubresource.mipLevel = 0;
// copyRegion.srcSubresource.baseArrayLayer = 0;
// copyRegion.srcSubresource.layerCount = 1;
// copyRegion.dstSubresource.aspectMask = aspectMask;
// copyRegion.dstSubresource.mipLevel = 0;
// copyRegion.dstSubresource.baseArrayLayer = 0;
// copyRegion.dstSubresource.layerCount = 1;
// copyRegion.extent.width = InParam->Resource.ImageViewInfo.Width;
// copyRegion.extent.height = InParam->Resource.ImageViewInfo.Height;
// copyRegion.extent.depth = 1;
//
// vkCmdCopyImage(InCmdBuffer, InParam->Resource.ImageViewInfo.Image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
// InDestImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &copyRegion);
//
// // Transition dest image to shader read optimal (for D3D12 access)
// VkImageMemoryBarrier shaderReadBarrier = {};
// shaderReadBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
// shaderReadBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
// shaderReadBarrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
// shaderReadBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// shaderReadBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// shaderReadBarrier.image = InDestImage;
// shaderReadBarrier.subresourceRange = InParam->Resource.ImageViewInfo.SubresourceRange;
// shaderReadBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
// shaderReadBarrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
//
// vkCmdPipelineBarrier(InCmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, 0,
// nullptr, 0, nullptr, 1, &shaderReadBarrier);
//
// // Restore source image layout
// VkImageMemoryBarrier restoreSrcBarrier = {};
// restoreSrcBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
// restoreSrcBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
// restoreSrcBarrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
// restoreSrcBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// restoreSrcBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
// restoreSrcBarrier.image = InParam->Resource.ImageViewInfo.Image;
// restoreSrcBarrier.subresourceRange = InParam->Resource.ImageViewInfo.SubresourceRange;
// restoreSrcBarrier.srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
// restoreSrcBarrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
//
// vkCmdPipelineBarrier(InCmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, 0,
// nullptr, 0, nullptr, 1, &restoreSrcBarrier);
//
// return true;
// }
uint32_t IFeature_VkwDx12::FindVulkanMemoryTypeIndex(uint32_t MemoryTypeBits, VkMemoryPropertyFlags PropertyFlags)
{
VkPhysicalDeviceMemoryProperties memoryProperties = {};
@@ -629,14 +542,6 @@ bool IFeature_VkwDx12::CreateSharedTexture(const VkImageCreateInfo& ImageInfo, V
};
VkMemoryPropertyFlags memoryFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
//// Depth formats may need different memory properties for D3D12 interop
// if (dxgiFormat == DXGI_FORMAT_D32_FLOAT || dxgiFormat == DXGI_FORMAT_D16_UNORM ||
// dxgiFormat == DXGI_FORMAT_D24_UNORM_S8_UINT || dxgiFormat == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
//{
// // For depth formats, don't require device-local (shared depth might not support it)
// memoryFlags = 0; // Let FindVulkanMemoryTypeIndex pick the best available
// LOG_DEBUG("Using flexible memory properties for depth format interop");
// }
const VkMemoryAllocateInfo memoryAllocInfo = {
.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
@@ -687,8 +592,6 @@ bool IFeature_VkwDx12::CopyTextureFromVkToDx12(VkCommandBuffer InCmdBuffer, NVSD
VK_TEXTURE2D_RESOURCE_C* OutResource, ResourceCopy_Vk* InCopyShader,
bool InCopy, bool InDepth)
{
LOG_FUNC();
// Convert VkFormat to DXGI_FORMAT early for validation
DXGI_FORMAT dxgiFormat = VkFormatToDxgiFormat(InParam->Resource.ImageViewInfo.Format);
if (dxgiFormat == DXGI_FORMAT_UNKNOWN)
@@ -792,10 +695,6 @@ bool IFeature_VkwDx12::CopyTextureFromVkToDx12(VkCommandBuffer InCmdBuffer, NVSD
{
if (isDepthFormat)
{
// LOG_DEBUG("Using DepthTransfer_Vk for format: {} ({})",
// magic_enum::enum_name(InParam->Resource.ImageViewInfo.Format),
// (int) InParam->Resource.ImageViewInfo.Format);
if (!DT->CanRender())
{
LOG_ERROR("DepthTransfer_Vk not initialized!");
@@ -881,10 +780,6 @@ bool IFeature_VkwDx12::CopyTextureFromVkToDx12(VkCommandBuffer InCmdBuffer, NVSD
}
else
{
// LOG_DEBUG("Using ResourceCopy_Vk for format: {} ({})",
// magic_enum::enum_name(InParam->Resource.ImageViewInfo.Format),
// (int) InParam->Resource.ImageViewInfo.Format);
if (!InCopyShader->CanRender())
{
LOG_ERROR("ResourceCopy_Vk not initialized!");