Closed HerveRV closed 3 weeks ago
FFX_API is open source. You can build debug version of this lib, use it in your project and debug the exception. Look at ffx-api/BuildFfxApiDll.bat
Thanks to @StefanPoelloth, i found the solution :
BackendVKDesc.vkDeviceProcAddr = vkGetDeviceProcAddr;
->
BackendVKDesc.vkDeviceProcAddr = Override_vkGetDeviceProcAddr;
VKAPI_ATTR PFN_vkVoidFunction Override_vkGetDeviceProcAddr(VkDevice device, const char *pName)
{
if(strcmp(pName, "vkSetDebugUtilsObjectNameEXT") == 0) return (PFN_vkVoidFunction)vkSetDebugUtilsObjectNameEXT;
if(strcmp(pName, "vkFlushMappedMemoryRanges") == 0) return (PFN_vkVoidFunction)vkFlushMappedMemoryRanges;
if(strcmp(pName, "vkCreateDescriptorPool") == 0) return (PFN_vkVoidFunction)vkCreateDescriptorPool;
if(strcmp(pName, "vkCreateSampler") == 0) return (PFN_vkVoidFunction)vkCreateSampler;
if(strcmp(pName, "vkCreateDescriptorSetLayout") == 0) return (PFN_vkVoidFunction)vkCreateDescriptorSetLayout;
if(strcmp(pName, "vkCreateBuffer") == 0) return (PFN_vkVoidFunction)vkCreateBuffer;
if(strcmp(pName, "vkCreateBufferView") == 0) return (PFN_vkVoidFunction)vkCreateBufferView;
if(strcmp(pName, "vkCreateImage") == 0) return (PFN_vkVoidFunction)vkCreateImage;
if(strcmp(pName, "vkCreateImageView") == 0) return (PFN_vkVoidFunction)vkCreateImageView;
if(strcmp(pName, "vkCreateShaderModule") == 0) return (PFN_vkVoidFunction)vkCreateShaderModule;
if(strcmp(pName, "vkCreatePipelineLayout") == 0) return (PFN_vkVoidFunction)vkCreatePipelineLayout;
if(strcmp(pName, "vkCreateComputePipelines") == 0) return (PFN_vkVoidFunction)vkCreateComputePipelines;
if(strcmp(pName, "vkDestroyPipelineLayout") == 0) return (PFN_vkVoidFunction)vkDestroyPipelineLayout;
if(strcmp(pName, "vkDestroyPipeline") == 0) return (PFN_vkVoidFunction)vkDestroyPipeline;
if(strcmp(pName, "vkDestroyImage") == 0) return (PFN_vkVoidFunction)vkDestroyImage;
if(strcmp(pName, "vkDestroyImageView") == 0) return (PFN_vkVoidFunction)vkDestroyImageView;
if(strcmp(pName, "vkDestroyBuffer") == 0) return (PFN_vkVoidFunction)vkDestroyBuffer;
if(strcmp(pName, "vkDestroyBufferView") == 0) return (PFN_vkVoidFunction)vkDestroyBufferView;
if(strcmp(pName, "vkDestroyDescriptorSetLayout") == 0) return (PFN_vkVoidFunction)vkDestroyDescriptorSetLayout;
if(strcmp(pName, "vkDestroyDescriptorPool") == 0) return (PFN_vkVoidFunction)vkDestroyDescriptorPool;
if(strcmp(pName, "vkDestroySampler") == 0) return (PFN_vkVoidFunction)vkDestroySampler;
if(strcmp(pName, "vkDestroyShaderModule") == 0) return (PFN_vkVoidFunction)vkDestroyShaderModule;
if(strcmp(pName, "vkGetBufferMemoryRequirements") == 0) return (PFN_vkVoidFunction)vkGetBufferMemoryRequirements;
if(strcmp(pName, "vkGetBufferMemoryRequirements2KHR") == 0) return (PFN_vkVoidFunction)vkGetBufferMemoryRequirements2; // vkGetBufferMemoryRequirements2KHR == NULL !
if(strcmp(pName, "vkGetImageMemoryRequirements") == 0) return (PFN_vkVoidFunction)vkGetImageMemoryRequirements;
if(strcmp(pName, "vkAllocateDescriptorSets") == 0) return (PFN_vkVoidFunction)vkAllocateDescriptorSets;
if(strcmp(pName, "vkFreeDescriptorSets") == 0) return (PFN_vkVoidFunction)vkFreeDescriptorSets;
if(strcmp(pName, "vkAllocateMemory") == 0) return (PFN_vkVoidFunction)vkAllocateMemory;
if(strcmp(pName, "vkFreeMemory") == 0) return (PFN_vkVoidFunction)vkFreeMemory;
if(strcmp(pName, "vkMapMemory") == 0) return (PFN_vkVoidFunction)vkMapMemory;
if(strcmp(pName, "vkUnmapMemory") == 0) return (PFN_vkVoidFunction)vkUnmapMemory;
if(strcmp(pName, "vkBindBufferMemory") == 0) return (PFN_vkVoidFunction)vkBindBufferMemory;
if(strcmp(pName, "vkBindImageMemory") == 0) return (PFN_vkVoidFunction)vkBindImageMemory;
if(strcmp(pName, "vkUpdateDescriptorSets") == 0) return (PFN_vkVoidFunction)vkUpdateDescriptorSets;
if(strcmp(pName, "vkCmdPipelineBarrier") == 0) return (PFN_vkVoidFunction)vkCmdPipelineBarrier;
if(strcmp(pName, "vkCmdBindPipeline") == 0) return (PFN_vkVoidFunction)vkCmdBindPipeline;
if(strcmp(pName, "vkCmdBindDescriptorSets") == 0) return (PFN_vkVoidFunction)vkCmdBindDescriptorSets;
if(strcmp(pName, "vkCmdDispatch") == 0) return (PFN_vkVoidFunction)vkCmdDispatch;
if(strcmp(pName, "vkCmdDispatchIndirect") == 0) return (PFN_vkVoidFunction)vkCmdDispatchIndirect;
if(strcmp(pName, "vkCmdCopyBuffer") == 0) return (PFN_vkVoidFunction)vkCmdCopyBuffer;
if(strcmp(pName, "vkCmdCopyImage") == 0) return (PFN_vkVoidFunction)vkCmdCopyImage;
if(strcmp(pName, "vkCmdCopyBufferToImage") == 0) return (PFN_vkVoidFunction)vkCmdCopyBufferToImage;
if(strcmp(pName, "vkCmdClearColorImage") == 0) return (PFN_vkVoidFunction)vkCmdClearColorImage;
if(strcmp(pName, "vkCmdFillBuffer") == 0) return (PFN_vkVoidFunction)vkCmdFillBuffer;
if(strcmp(pName, "vkCmdWriteBufferMarkerAMD") == 0) return (PFN_vkVoidFunction)vkCmdWriteBufferMarkerAMD; // NULL sur nVidia
if(strcmp(pName, "vkCmdWriteBufferMarker2AMD") == 0) return (PFN_vkVoidFunction)vkCmdWriteBufferMarker2AMD; // NULL sur nVidia
if(strcmp(pName, "vkCmdBeginDebugUtilsLabelEXT") == 0) return (PFN_vkVoidFunction)vkCmdBeginDebugUtilsLabelEXT;
if(strcmp(pName, "vkCmdEndDebugUtilsLabelEXT") == 0) return (PFN_vkVoidFunction)vkCmdEndDebugUtilsLabelEXT;
DebugBreak();
return NULL;
}
Hi everyone
(Windows 11 updated, cmakegui 3.30.2, visual studio 2022 updated, C++; Vulkan 1.3.290, RTX3080Ti, core i9-12900K)
I'm unable to use ffx::CreateContext(), no matter what i try : nothing works and it always crash (amd_fidelityfx_vk.dll is the signed version from the in the fidelityFX 1.1 sdk)
BackendVK :
FSR3.1 :
-> Unhandled exception at 0x0000000000000000 in XXX.exe: 0xC0000005: Access violation executing location 0x0000000000000000.
How can i resolve that ? Using debug mode in vulkan context création only teach me about one useless information : a performance warning... It crash too if i try to create a frame generation context, the same way, i don't show the code here, it's not so tiny Can we found or create a debug version of this dll ? Thanks ! :-)
PS : the demo sample in debug mode work great and do not crash