mirror of
https://github.com/optiscaler/OptiScaler.git
synced 2026-08-28 17:16:46 +00:00
disable spoofing for vulkan context creation
This commit is contained in:
@@ -19,6 +19,8 @@ bool FSR2FeatureVk::InitFSR2(const NVSDK_NGX_Parameter* InParameters)
|
||||
return false;
|
||||
}
|
||||
|
||||
Config::Instance()->dxgiSkipSpoofing = true;
|
||||
|
||||
auto scratchBufferSize = ffxFsr2GetScratchMemorySizeVK(PhysicalDevice);
|
||||
void* scratchBuffer = calloc(scratchBufferSize, 1);
|
||||
|
||||
@@ -122,6 +124,8 @@ bool FSR2FeatureVk::InitFSR2(const NVSDK_NGX_Parameter* InParameters)
|
||||
|
||||
auto ret = ffxFsr2ContextCreate(&_context, &_contextDesc);
|
||||
|
||||
Config::Instance()->dxgiSkipSpoofing = false;
|
||||
|
||||
if (ret != FFX_OK)
|
||||
{
|
||||
LOG_ERROR("ffxFsr2ContextCreate error: {0}", ResultToString(ret));
|
||||
|
||||
@@ -19,6 +19,8 @@ bool FSR2FeatureVk212::InitFSR2(const NVSDK_NGX_Parameter* InParameters)
|
||||
return false;
|
||||
}
|
||||
|
||||
Config::Instance()->dxgiSkipSpoofing = true;
|
||||
|
||||
auto scratchBufferSize = Fsr212::ffxFsr2GetScratchMemorySizeVK212(PhysicalDevice);
|
||||
void* scratchBuffer = calloc(scratchBufferSize, 1);
|
||||
|
||||
@@ -118,6 +120,8 @@ bool FSR2FeatureVk212::InitFSR2(const NVSDK_NGX_Parameter* InParameters)
|
||||
|
||||
auto ret = Fsr212::ffxFsr2ContextCreate212(&_context, &_contextDesc);
|
||||
|
||||
Config::Instance()->dxgiSkipSpoofing = false;
|
||||
|
||||
if (ret != Fsr212::FFX_OK)
|
||||
{
|
||||
LOG_ERROR("ffxFsr2ContextCreate error: {0}", ResultToString212(ret));
|
||||
@@ -145,6 +149,35 @@ bool FSR2FeatureVk212::Init(VkInstance InInstance, VkPhysicalDevice InPD, VkDevi
|
||||
return InitFSR2(InParameters);
|
||||
}
|
||||
|
||||
void transitionImageToShaderReadOnly(VkCommandBuffer commandBuffer, VkImage image, VkFormat format, VkAccessFlagBits flag = VK_ACCESS_SHADER_READ_BIT)
|
||||
{
|
||||
VkImageMemoryBarrier barrier = {};
|
||||
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
barrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; // Previous layout is unknown or irrelevant
|
||||
barrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.image = image;
|
||||
barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
barrier.subresourceRange.baseMipLevel = 0;
|
||||
barrier.subresourceRange.levelCount = 1;
|
||||
barrier.subresourceRange.baseArrayLayer = 0;
|
||||
barrier.subresourceRange.layerCount = 1;
|
||||
|
||||
barrier.srcAccessMask = 0; // No previous accesses need to be waited on
|
||||
barrier.dstAccessMask = flag;
|
||||
|
||||
vkCmdPipelineBarrier(
|
||||
commandBuffer,
|
||||
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, // Earliest possible stage
|
||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, // Transition to fragment shader stage
|
||||
0, // No special flags
|
||||
0, nullptr, // No memory barriers
|
||||
0, nullptr, // No buffer barriers
|
||||
1, &barrier // One image barrier
|
||||
);
|
||||
}
|
||||
|
||||
bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* InParameters)
|
||||
{
|
||||
LOG_FUNC();
|
||||
@@ -174,6 +207,10 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter
|
||||
{
|
||||
LOG_DEBUG("Color exist..");
|
||||
|
||||
//transitionImageToShaderReadOnly(InCmdBuffer,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramColor)->Resource.ImageViewInfo.Image,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramColor)->Resource.ImageViewInfo.Format);
|
||||
|
||||
params.color = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramColor)->Resource.ImageViewInfo.Image,
|
||||
((NVSDK_NGX_Resource_VK*)paramColor)->Resource.ImageViewInfo.ImageView,
|
||||
((NVSDK_NGX_Resource_VK*)paramColor)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramColor)->Resource.ImageViewInfo.Height,
|
||||
@@ -192,6 +229,10 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter
|
||||
{
|
||||
LOG_DEBUG("MotionVectors exist..");
|
||||
|
||||
//transitionImageToShaderReadOnly(InCmdBuffer,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramVelocity)->Resource.ImageViewInfo.Image,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramVelocity)->Resource.ImageViewInfo.Format);
|
||||
|
||||
params.motionVectors = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramVelocity)->Resource.ImageViewInfo.Image,
|
||||
((NVSDK_NGX_Resource_VK*)paramVelocity)->Resource.ImageViewInfo.ImageView,
|
||||
((NVSDK_NGX_Resource_VK*)paramVelocity)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramVelocity)->Resource.ImageViewInfo.Height,
|
||||
@@ -210,6 +251,11 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter
|
||||
{
|
||||
LOG_DEBUG("Output exist..");
|
||||
|
||||
//transitionImageToShaderReadOnly(InCmdBuffer,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramOutput)->Resource.ImageViewInfo.Image,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramOutput)->Resource.ImageViewInfo.Format,
|
||||
// VK_ACCESS_SHADER_WRITE_BIT);
|
||||
|
||||
params.output = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramOutput)->Resource.ImageViewInfo.Image,
|
||||
((NVSDK_NGX_Resource_VK*)paramOutput)->Resource.ImageViewInfo.ImageView,
|
||||
((NVSDK_NGX_Resource_VK*)paramOutput)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramOutput)->Resource.ImageViewInfo.Height,
|
||||
@@ -228,6 +274,10 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter
|
||||
{
|
||||
LOG_DEBUG("Depth exist..");
|
||||
|
||||
//transitionImageToShaderReadOnly(InCmdBuffer,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramDepth)->Resource.ImageViewInfo.Image,
|
||||
// ((NVSDK_NGX_Resource_VK*)paramDepth)->Resource.ImageViewInfo.Format);
|
||||
|
||||
params.depth = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramDepth)->Resource.ImageViewInfo.Image,
|
||||
((NVSDK_NGX_Resource_VK*)paramDepth)->Resource.ImageViewInfo.ImageView,
|
||||
((NVSDK_NGX_Resource_VK*)paramDepth)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramDepth)->Resource.ImageViewInfo.Height,
|
||||
|
||||
@@ -94,6 +94,8 @@ bool FSR31FeatureVk::InitFSR3(const NVSDK_NGX_Parameter* InParameters)
|
||||
return false;
|
||||
}
|
||||
|
||||
Config::Instance()->dxgiSkipSpoofing = true;
|
||||
|
||||
ffxQueryDescGetVersions versionQuery{};
|
||||
versionQuery.header.type = FFX_API_QUERY_DESC_TYPE_GET_VERSIONS;
|
||||
versionQuery.createDescType = FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE;
|
||||
@@ -219,6 +221,8 @@ bool FSR31FeatureVk::InitFSR3(const NVSDK_NGX_Parameter* InParameters)
|
||||
LOG_DEBUG("_createContext!");
|
||||
auto ret = _createContext(&_context, &_contextDesc.header, NULL);
|
||||
|
||||
Config::Instance()->dxgiSkipSpoofing = false;
|
||||
|
||||
if (ret != FFX_API_RETURN_OK)
|
||||
{
|
||||
LOG_ERROR("_createContext error: {0}", ResultToString(ret));
|
||||
|
||||
Reference in New Issue
Block a user