baldurk
f8aec0f890
Always report uncompacted AS size on D3D12
...
* Drivers can compact inconsistently so if we have a compaction that ends up
smaller during capture than replay we will end up with overlapping and invalid
AS locations on replay.
* We still allow compactions to happen in case there's a performance benefit,
the application will just not be able to exploit any memory savings.
2024-10-03 16:32:45 +01:00
baldurk
ae6bc1fd82
Enable RTP capture/replay feature on vulkan
2024-10-03 16:32:35 +01:00
baldurk
ca73392638
Step up through composite types when looking for file scope
2024-10-03 16:32:25 +01:00
baldurk
be3f2a65fb
Fix export lookup index being incorrect
2024-10-03 16:32:19 +01:00
baldurk
b49e2e607f
Add test of very short-lived RTV/DSV heaps
2024-10-03 16:32:09 +01:00
baldurk
2c1afc36a8
Fix crash if PSO is passed to CreateCommandList
2024-10-03 16:30:37 +01:00
Cam Mannett
a68c076341
Switch to GPU side query result replacement
2024-10-03 16:18:51 +01:00
Cam Mannett
5be2156bbe
Replace queried AS compaction sizes with full size
...
The spec does not mandate that the compaction size is the same between capture and replay, so we effectively disable it by always returning the full AS size when the compaction size is queried.
2024-10-03 16:18:51 +01:00
Cam Mannett
e08871d5c0
Vulkan AS rebuild-on-replay: Copy AS input buffers on build
...
When vkCmdBuildAccelerationStructuresKHR is called, the input buffers used for the build are copied into host-accessible memory, so when initial state serialisation is triggers it can be copied into the capture file.
To unify the behaviour of the different geometry types, there is only one readback buffer per AS, and in the case of triangle data it can contain the vertex, index, and transform data concatenated into a single contiguous block.
The buffer data along with build arguments are stored in a ref-counted VkAccelerationStructureInfo object held by the AS's VkResourceRecord. Once the info object is destroyed, then the copied buffer mem is also freed.
Serialisation of the initial state will follow in later patches.
Caveats:
* vkCmdBuildAccelerationStructuresIndirectKHR is not handled
* VkAccelerationStructureGeometryInstancesDataKHR::arrayOfPointers mode is not handled
2024-10-03 16:18:51 +01:00
baldurk
68a2866850
Add a couple of older Intel driver DLLs
2024-09-30 11:10:00 +01:00
baldurk
9795d8fbb0
Handle encoding DXIL bytecode with multiple functions
...
* After each function we need to reset the IDs of any function-local constants
since they may be referenced in other functions and need to be given new
function-local IDs for reference.
2024-09-30 11:08:30 +01:00
baldurk
4c003525b3
Add support for PSV data version 3
...
* This has a very disappointingly considered string in the header struct which
comes *before* the string table.
2024-09-30 11:07:53 +01:00
baldurk
c9714b9eaf
Bump version to v1.36
2024-09-27 18:01:00 +01:00
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