Commit Graph

9380 Commits

Author SHA1 Message Date
baldurk a32c48c863 Fix wrong loop increment in PostVS SPIR-V patching 2019-08-28 15:20:10 +01:00
baldurk e2f2b7191a Make sure to cache all replay shaders on D3D11 2019-08-28 15:19:55 +01:00
baldurk fbe4bca6fb Add illegal workaround for broken Android skia library
* Skia had a bug (which has been fixed) where it would incorrectly check for
  glGetError() to see if glProgramBinary() had succeeded. This is completely
  wrong and it should be checking the link status. When RenderDoc silently
  dropped the function call to leave the link status as invalid, Skia deleted
  the program and then tried to use it anyway leading to incorrect rendering.
* Potential other fixes in order of preference:
  - Spec-compliant: Return a random program binary format each time the
    program runs. This should prevent a correctly-written program from
    re-using cached binaries, but of course Skia ignores the binary format
    and uploads it anyway. We'd hit the same broken error check and we're
    back to square one.
  - Spec-compliant: Write a program binary format of our own that embeds all
    the shader source and replays it again. Would be valid and work, but is
    very complex.
  - Non-spec-compliant: Fake the error code that Skia is looking for. In a
    program which is written correctly we then poison glGetError() and cause
    unpredictable and possibly serious errors elsewhere.
* Instead we just return 0 for GL_NUM_PROGRAM_BINARY_FORMATS on Android, and
  Skia turns off its caching entirely. This is not spec-compliant either since
  the spec requires at least one format in the list that is returned by
  glGetProgramBinary, but if the Android OS is going to break the spec at us
  then we'll break it right back.
* Bottom-line: Android is an absolutely horrible operating system that is broken
  at every turn and no-one should be forced to deal with it.
2019-08-28 14:14:49 +01:00
baldurk fa56e74181 Increase the wait after starting android remote server
* No surprise here, Android is bad so it takes ages after starting the program
  before it is actually running.
2019-08-28 12:15:27 +01:00
baldurk 0d7c7eb247 Fix linux compilation 2019-08-27 19:44:29 +01:00
baldurk 80bfa1b409 Fix display of ResourceId text in log viewer 2019-08-27 18:51:57 +01:00
baldurk 21be21cb8f RichResourceText QTextDocument should use parent widget's font
* Otherwise the hit-testing might be off
2019-08-27 18:51:57 +01:00
baldurk c18708cfd8 Remove warning that's falsely triggered now in valid cases 2019-08-27 18:51:57 +01:00
baldurk 1d270254c1 Add documentation for replay options 2019-08-27 18:51:57 +01:00
baldurk 9d5379b740 Remove problematic assert, only check that returned image count is OK 2019-08-27 18:51:57 +01:00
baldurk 6203909791 Expose replay options to the UI
* The defaults can be configured from the settings menu, and there's a new "Open
  Capture with Options" menu option to open a capture with different options
  temporarily.
2019-08-27 18:51:56 +01:00
baldurk b4a3fb4490 Fetch debug messages at replay time if option is enabled 2019-08-27 18:51:56 +01:00
baldurk c7682ca7a8 Only mark referenced pipeline members if a pipeline is bound 2019-08-27 18:51:56 +01:00
baldurk 3b04011f7f Use replay optimisation level to set vulkan InitState reset policy 2019-08-27 18:51:56 +01:00
baldurk b0933dcf33 Implement forced GPU override on D3D11, D3D12 and Vulkan 2019-08-27 18:51:56 +01:00
baldurk 20be9f3d52 Add ReplayOptions struct to contain replay-time configuration
* Not currently exposed to the UI or used by the drivers, we just pass the
  default object through
2019-08-27 18:51:56 +01:00
baldurk 878acd4ad9 Add a function to enumerate which GPUs are available at replay time 2019-08-27 18:51:56 +01:00
baldurk d81331918e Save info about the used GPU on D3D11, D3D12 and GL
* On GL this is purely informational, but on D3D11 and D3D12 we use this to
  select the closest available adapter on replay, as we already do on Vulkan.
2019-08-27 18:51:56 +01:00
baldurk 8c6fc67acd Make it extra clear that RenderDoc needs to find the Android SDK 2019-08-27 18:51:56 +01:00
baldurk 04a221226d Identify Google Swiftshader and Microsoft WARP PCI vendor IDs 2019-08-27 18:51:55 +01:00
baldurk f46ec7c21e Fix leaking resource when creating dummy/proxy vulkan driver 2019-08-27 18:51:55 +01:00
baldurk f53f52b172 Fix loads of subsequent D3D12On7 captures 2019-08-27 18:51:55 +01:00
baldurk c579c6f264 Be a bit more explicit about the GL disassembly being SPIR-V if it fails 2019-08-27 18:51:55 +01:00
Connor Abbott 09e6d7ca58 Only copy existing bindings in PatchReservedDescriptors()
* Fixes a crash when looking at certain draws in No Man's Sky, which
apparently sometimes binds a descriptor set with fewer bindings than the
layout specified.
2019-08-26 17:08:34 +01:00
baldurk 6971a585aa Fix compilation on 32-bit windows 2019-08-26 16:52:09 +01:00
baldurk af3c242b35 Fix signed/unsigned comparison 2019-08-26 14:52:58 +01:00
baldurk d6289b93d0 Fix check for whether LastCaptureFilePath should be updated 2019-08-26 13:49:58 +01:00
baldurk 2ed4547fe8 Implement support for VK_IMG_filter_cubic / VK_EXT_filter_cubic 2019-08-26 13:33:43 +01:00
baldurk 3b524ea7f1 Fix reflection of arrays-of-binds - textures and buffers 2019-08-26 13:22:26 +01:00
baldurk d38109d047 Fix bindless feedback SPIR-V modification 2019-08-26 13:10:18 +01:00
baldurk b2d8f12fa6 Fix replay of single-int uniforms 2019-08-24 15:49:49 +01:00
baldurk 2a8d7eddec Set sampler name for combined image/samplers in pipeline HTML export 2019-08-23 23:41:19 +01:00
baldurk cf6a021db9 Ignore descriptor writes with descriptorCount == 0 2019-08-23 19:27:52 +01:00
baldurk c2fe16b44a Add support for D3D12On7 2019-08-22 18:43:48 +01:00
baldurk 346ee91f70 Store location not byte offset for loose globals in SPIR-V 2019-08-22 10:16:18 +01:00
baldurk 4c9fec4cb4 Fix calling convention on vulkan layer function. Closes #1500 2019-08-22 10:14:39 +01:00
baldurk c077e8f992 DXC does not have command line parameters in OpModuleProcessed 2019-08-20 15:33:12 +01:00
baldurk a0bc429bef Handle a source line corresponding to multiple instructions
* This can happen with inlined functions
2019-08-20 15:33:12 +01:00
baldurk 4f37a3b15a Handle typed UAV load/store from other formats than 32-bit DWORDs
* DX11 in feature level 11 didn't support these, but newer feature levels add
  additional support that requires decode/encode and truncation to the right
  width
2019-08-20 15:33:12 +01:00
baldurk 07158ad24c Fix support for triangle fans on GL/Vulkan 2019-08-20 15:33:12 +01:00
baldurk 27dcb72b93 Update vulkan headers to 1.1.120 2019-08-20 15:33:12 +01:00
baldurk 0a48833e12 Only make text overlay resources visible in necessary shader stages 2019-08-20 15:33:11 +01:00
Aliya Pazylbekova 5ce8fc7f4a Update name for compute pipelines to Compute Pipeline
From "Graphics Pipeline"
2019-08-16 19:43:42 +01:00
baldurk d60f3020c8 Fix uninitialised variable 2019-08-16 19:08:05 +01:00
baldurk 9e68cbe59b Fix typo in unit tests 2019-08-16 19:00:40 +01:00
baldurk ee43d4377c Account for pipeline specialisation constants when reflecting shaders 2019-08-16 17:38:35 +01:00
baldurk e71f986f84 Set warning level on SPIR-V files in VS project 2019-08-16 17:38:35 +01:00
baldurk 759d034def Update external code to use new SPIR-V reflector, remove old one 2019-08-16 17:38:35 +01:00
baldurk dba34759b4 Add disassembly to new reflector 2019-08-16 17:38:35 +01:00
baldurk 2c815ab93e Add new refactored & simplified SPIR-V reflector 2019-08-16 17:38:35 +01:00