15030 Commits

Author SHA1 Message Date
baldurk 8a394019fd Fix installer typos v1.35 2024-09-27 11:57:42 +01:00
baldurk a342fcbe30 Add dxcompiler.dll to installer 2024-09-27 10:46:25 +01:00
James Sumihiro aaf64f1edf Fix uninitialized reftype during image state merge
The reftype of a merged subresource state is now initialized with the reftype of the original subresource state

This resolves an issue that could occur if image states in a secondary command buffer were merged into a primary for the first time, where the resulting merged image state would have an uninitialized reftype
2024-09-26 10:18:48 +01:00
baldurk f0389a6ccc Fix crash if opening D3D11 cbuffer view with no shader bound 2024-09-24 14:14:13 +01:00
Jake Turner 11e8039622 DXIL Debugger find the entry point in GetLineInfo
Get entry point from meta data if the entry point is empty
2024-09-24 11:06:00 +01:00
baldurk 8b23157086 Check extension/version capabilities for sampler descriptors too on GLES 2024-09-23 14:04:47 +01:00
baldurk ce6b999995 Fix typo in warning message 2024-09-23 14:04:46 +01:00
Jake Turner 66a43b3d45 Moved var_dispatch_helpers.h to replay/common folder
To enable sharing ShaderVariable helpers for the SPIRV and DXIL Shader Debuggers
2024-09-20 17:44:41 +01:00
Jake Turner 982f464eee Do not call end_section when a shader debug pixel comparison test fails 2024-09-20 17:44:25 +01:00
baldurk 5a9c707bef Drop use of dxil.dll entirely, prefer loading from plugin
* We already hash any unhashed containers so we don't need dxil.dll for anything
2024-09-20 14:18:09 +01:00
baldurk 8b096de227 Check for feature availability when fetching GL descriptors 2024-09-20 13:35:43 +01:00
baldurk 6388289921 Fix crash if cbuffer creation fails 2024-09-20 13:30:33 +01:00
baldurk 0bf89f95c0 Reset compute state when CB is reset 2024-09-20 13:30:33 +01:00
baldurk a882efef66 Rename RT manager to be less of a mouthful 2024-09-20 13:30:33 +01:00
baldurk 40d0b8088c Properly wait on jobs for setting stack size 2024-09-20 13:30:32 +01:00
baldurk 70cadc8f81 Don't rely on device sharing when not singleton device 2024-09-20 13:30:32 +01:00
baldurk 0cea7aae41 Add warning to users when vkconfig is detected
* This causes quite a few crashes on startup during Vulkan initialisation.
2024-09-20 13:30:32 +01:00
baldurk c0bb0f93bb Don't assert if job system is synced when not initialised 2024-09-20 13:30:32 +01:00
Jake Turner 9b1332077a DXIL Disassembly: Include GlobalVar in SSA Id generation
During SettleIDs() check that all instruction arguments that require an SSA Id have one set

Moved DXILDebug::Id, INVALID_ID, DXIL::GetSSAId() out of DXIL Debugger
2024-09-20 11:09:05 +01:00
Jake Turner d46b29a916 Added uint32_t ssaID to DXIL::GlobalVar
Changed GlobalVar::align from uint64_t -> uint32_t to make space for the new member
2024-09-20 11:07:42 +01:00
Jake Turner e22bf99392 DXIL RD Disassembly demangle global variable names 2024-09-20 11:07:42 +01:00
Cam Mannett 6dd3faa2a1 Correct compressed texture copy sizing asserts
Reported in #3432

wedw

Change-Id: If74a96bbb5b0c7561e4bef4bca3cb6e9be97e7da
2024-09-20 10:57:33 +01:00
Jake Turner 2b7f1a8185 DXIL Add Unknown to FunctionFamily
Make it clear when family has not been calculated
2024-09-19 11:25:44 +01:00
Jake Turner eb01d2dead DXIL Debugger find the entry point in GetLineInfo 2024-09-19 11:25:39 +01:00
Jake Turner df80c1ebcb DXIL Debugging improved tracking of local source variables
Use DXIL::DILocalVariable* as the unique key
2024-09-19 10:39:53 +01:00
Jake Turner e2271c2d3f DXIL Debugger Source Variable Scope handling changes
Include DILexicalBlock scopes
Fixes to the search for the scope based on instruction index
Handle the case of scopes which have no mappings
Update parent scope min, max instruction
Handle scope min, max instruction tracking in AddScopedDebugData
Only update activeInstructionIndex for instructions with valid DebugLoc data
2024-09-18 17:15:11 +01:00
Jake Turner 42a1b4e641 For Test D3D12_Sharing validate the D3D12 Drawcall results
In addition to the Copy results
2024-09-18 12:45:55 +01:00
Jake Turner 33fb099a37 D3D12GraphicsTest print shader compile error message correctly
Error string is not NULL terminated, use GetBufferSize() to determine how many characters to print
2024-09-18 12:32:45 +01:00
Jake Turner 53e73a1eda DXIL Debugger support for Source Variables
Using Dwarf debug metadata and llvm.dbg.declare, llvm.dbg.value calls
2024-09-18 11:34:56 +01:00
Cam Mannett 031c4955e9 Check command buffer callback queue before VkDevice is destroyed
We only check for signaled events on each queue submit, so the last submission before exit will never be checked.  This change makes sure we release for completed submissions just before the device is destroyed (typically target application exit).  In this case the callbacks are not called.
2024-09-18 11:06:58 +01:00
Jake Turner 0f8ad0d1fe Conditionally test SM 6.0, 6.6 in D3D12_Shader_Debug_Zoo
Added SM 5.0 to the basic compute shader debug test
2024-09-16 09:36:37 +01:00
Jake Turner 97c4899d66 DXIL Debugger BeginDebug 2024-09-13 16:40:17 +01:00
Jake Turner 14d0fdb964 DXIL Debugger methods
void CalcActiveMask(rdcarray<bool> &activeMask);
void ParseDbgOpDeclare(const DXIL::Instruction &inst, uint32_t instructionIndex);
void ParseDbgOpValue(const DXIL::Instruction &inst, uint32_t instructionIndex);
size_t AddScopedDebugData(const DXIL::Metadata *scopeMD, uint32_t instructionIndex);
size_t FindScopedDebugDataIndex(const DXIL::Metadata *md) const;
size_t Debugger::FindScopedDebugDataIndex(const uint32_t instructionIndex) const;
void AddDebugType(const DXIL::Metadata *typeMD);
2024-09-13 16:38:53 +01:00
Jake Turner 5f3e864795 DXIL Debugger ThreadState::ExecuteInstruction 2024-09-13 16:33:13 +01:00
Jake Turner b528119494 DXIL Debugger ThreadState methods
ThreadState(uint32_t workgroupIndex, Debugger &debugger, const GlobalState &globalState);
~ThreadState();
void EnterFunction(const DXIL::Function *function, const rdcarray<DXIL::Value *> &args);
void EnterEntryPoint(const DXIL::Function *function, ShaderDebugState *state);
bool Finished() const;
MarkResourceAccess(const rdcstr &name, const DXIL::ResourceReference *resRef);
void SetResult(const Id &id, ShaderVariable &result, DXIL::Operation op, DXIL::DXOp dxOpCode,
                 ShaderEvents flags);
bool GetShaderVariable(const DXIL::Value *dxilValue, DXIL::Operation op, DXIL::DXOp dxOpCode,
                         ShaderVariable &var, bool flushDenormInput = true) const;
bool GetVariable(const Id &id, DXIL::Operation opCode, DXIL::DXOp dxOpCode,
                   ShaderVariable &var) const;
void ProcessScopeChange(const rdcarray<Id> &oldLive, const rdcarray<Id> &newLive);
rdcstr GetArgumentName(uint32_t i) const;
Id GetArgumentId(uint32_t i) const;
void PerformGPUResourceOp(const rdcarray<ThreadState> &workgroups, DXIL::Operation opCode,
                            DXIL::DXOp dxOpCode, const DXIL::ResourceReference *resRef,
                            DebugAPIWrapper *apiWrapper, const DXIL::Instruction &inst,
                            ShaderVariable &result);
void Sub(const ShaderVariable &a, const ShaderVariable &b, ShaderValue &ret) const;

ShaderValue DDX(bool fine, DXIL::Operation opCode, DXIL::DXOp dxOpCode,
                  const rdcarray<ThreadState> &quad, const Id &id) const;
ShaderValue DDY(bool fine, DXIL::Operation opCode, DXIL::DXOp dxOpCode,
                  const rdcarray<ThreadState> &quad, const Id &id) const;

ExecuteInstruction() is just a stub

And Debugger methods

const rdcarray<Id> &GetLiveGlobals();
const DXIL::Program &GetProgram() const;
const FunctionInfo *GetFunctionInfo(const DXIL::Function *function) const;
2024-09-13 16:30:16 +01:00
Jake Turner 853aee353c DXIL Debugger internal helper methods
DXILDebug::Id GetSSAId(DXIL::Value *value);
bool OperationFlushing(const Operation op, DXOp dxOpCode);
ShaderEvents AssignValue(ShaderVariable &result, const ShaderVariable &src, bool flushDenorm);
uint8_t GetElementByteSize(VarType type);
DXBC::ResourceRetType ConvertComponentTypeToResourceRetType(const ComponentType compType);
DXBCBytecode::ResourceDimension ConvertResourceKindToResourceDimension(const ResourceKind kind);
DXBCBytecode::SamplerMode ConvertSamplerKindToSamplerMode(const SamplerKind kind);
VarType ConvertDXILTypeToVarType(const Type *type);
void TypedUAVStore(DXILDebug::GlobalState::ViewFmt &fmt, byte *d, const ShaderValue &value);
ShaderValue TypedUAVLoad(DXILDebug::GlobalState::ViewFmt &fmt, const byte *d);
void FillViewFmt(VarType type, DXILDebug::GlobalState::ViewFmt &fmt);
2024-09-13 16:06:22 +01:00
Jake Turner ef6dea5397 DXIL DebugAPIWrapper Interface 2024-09-13 15:56:24 +01:00
Jake Turner 82005c8fee DXIL Debugger support code in D3D12_ShaderDebug.cpp
Code is effectively disabled because DXIL GetDebugStatus() returns "Debugging DXIL is not supported"
Includes minimum required helper structs/methods in DXIL Debugger
2024-09-13 15:31:36 +01:00
Jake Turner d1f69b5c72 DXIL Debugging D3D12APIWrapper
Includes minimum required helper structs/methods in DXILDebug
2024-09-13 15:03:31 +01:00
Jake Turner 772be86ec4 DXIL Source File and Line Debug Data 2024-09-13 14:46:48 +01:00
Jake Turner f8ddc1720a Added prototype of DXIL Source Variable Debug Data 2024-09-13 14:43:04 +01:00
Jake Turner 881e5e8e03 Added DoStringise() for DXIL::DW_OP 2024-09-13 14:40:28 +01:00
baldurk eed31e2a09 Fix compute shader handling of implicitly-set unspecified root signature
* Previous commit 304e636 fixed this for most cases but was incorrect for
  compute PSOs.
2024-09-13 13:22:04 +01:00
baldurk 51baf8a6af Add test of implicit compute shader root signature 2024-09-13 13:22:03 +01:00
baldurk 457e91f194 Make sure root signatures *precisely* patch between HLSL and code
* Also don't finish with the backbuffer too early and re-bind VB after execute
  indirect.
2024-09-13 13:22:03 +01:00
baldurk f689b23024 Don't run D3D12 singleton device test if we're using new device creation 2024-09-13 13:22:03 +01:00
Jake Turner 1cc0fd0323 D3D12 Shader Debug preparation for DXIL Pixel Shader Debugging
Move pixel shader debugging code which is shared by DXBC/DXIL to outside of if DXBC scope
2024-09-10 14:59:04 +01:00
Jake Turner 2dad8233a3 Added more DXIL Debug Info helpers, made debug info helpers const
rdcstr GetDebugScopeFilePath(const DIBase *d) const;
uint64_t GetDebugScopeLine(const DIBase *d) const;
const Metadata *GetDebugScopeParent(const DIBase *d) const;
2024-09-10 14:59:04 +01:00
Jake Turner 7b2754a978 Santisie the shader source filenames in DXIL BuildReflection
Reset Files and m_CompileFlags to avoid accumulation with repeated calls to BuildReflection
Set "preferSourceDebug" to "1" if the DXIL has source file data
2024-09-10 14:59:04 +01:00
Jake Turner f730eb6659 Add helper: rdcstr standardise_directory_separator(const rdcstr &path);
Replaces all directory separators combinations with '/'
i.e.
'\' -> '/'
'//' -> '/'
2024-09-10 14:59:03 +01:00