I vastly improved the handling of line number information coming out of SPDB chunks in shaders. This means better inlining of HLSL when building with newer FXC versions. (#32)
When using #line directives I do a much better job of finding the correct source if it's available, and then using that source to inline HLSL. If the original file is attached to the shader debug chunk, it will be preprocessed to fill out the 'fake' files specified by #line directives. (#31)
Loading layouts could still cause a crash with a race in the mesh viewer if a very large set of geometry was being viewed (#14)
When seeking through a logfile to find the start of a frame capture and skipping chunks, if the buffer window reallocated during reading a chunk this wasn't handled. Lead to a rare crash loading a logfile, more likely the smaller the log is. (#38)
Typeless multisampled textures now have their initial contents saved when detected necessary. (#43)
In rare cases - I'm not sure what triggered it - when enumerating DLLs in the target process renderdoc would be returned as RENDERDOC.DLL, and so the code would fail to find it. DLL searching is now case-insensitive. (#25)
Opening a new texture viewer window while a log is open would cause a crash. (#35)
If a deferred command list had a marker as its very first event, this would cause a crash when loading the log. (#33)
When creating multiple blend states with equivalent but different descriptors (e.g. blending disabled but different functions), these would be created as unique states and serialised out as unique states, but upon reading the descriptors would be the same and cause overlaps and likely crashes. (#44)
Fix a crash if no input vertices are selected and you click to debug the vertex shader.
Fix a crash when there is no mesh data and synced scrolling is enabled.
Return the correct contents for structured buffers vs. static resource typed buffers.
Range-check DstSubresource value, so that a too-high value passed in doesn't cause an immediate crash.
Fix the shader viewer looking in the wrong place for UAVs when displaying the register bindings.
List the different streams on the output signature of geometry shaders.
Fix a crash where a drawcall referencing invalid indices would cause RenderDoc to try and allocate way too much space and fall over.
Fix the display of D16 depth buffers.
Fixed the implementation of float compares in shader debugging that were using integer compares.
If no markers are present in the log and RenderDoc automatically fills out some defaults, the last draw (usually Present()) would get lost.
Logs now serialise strings as UTF-8 instead of windows wchar_t, to make logs portable between platforms
Fixed a crash changing the show disabled/show empty toggles in the texture viewer if no log is loaded
It's very early days, but I've put in a skeletal framework of OpenGL support. e.g. You can now capture the 'bumpmapping' superbible 6 sample on windows or linux, and replay it on windows and inspect basic things. (#47)
To support the above, the C++/CLI wrapper DLL was removed in favour of direct P/Invoke from C#.
There's an option in the settings window that lets you choose where temporary logs are saved, in case %TEMP% is an inconvenient location. (#40)
Temporary log filenames no longer append _ for each subsequent capture, they format the filename with the frame number. (#39)
Applications that rely on the specific refcounts of backbuffer resources when resizing (I saw this in UE4 at least) will now have the same values reported with and without renderdoc. (#41)
When editing a shader that doesn't have debug information embedded (so no HLSL) the generated stub shader will now include textures, buffers, samplers and constant buffers. (#13)
While debugging a pixel shader, any discard/clip operations will visibly stop immediately on the instruction, rather than the highlight jumping to the end of the program. (#45)
There were many problems with the resinfo assembly instruction (equivalent of GetDimensions in HLSL) (#36)
Implemented a few more shader debugging instructions, including the double instructions and ld_raw/ld_uav_typed.
Float formatter is now used for unorm/snorm type values in the mesh viewer (ie. if they're intended to be shown as floats, even if the source data isn't floating point)