Commit Graph

9418 Commits

Author SHA1 Message Date
baldurk bfad3dac2f Don't set optimisation level until we have replay options on Vulkan 2019-09-05 11:48:47 +01:00
Benson Joeris a14141eb52 Align MemRef intervals (#1510)
When initializing VkDeviceMemory resources, some regions may be cleared
using vkCmdFillBuffer, rather than having initial data copied.
vkCmdFillBuffer requires that the interval offset and size are multiples
of 4.

This change aligns all of the intervals containing the `FrameRefType`s
used to determine the initialization requirements for VkDeviceMemory.
This alignment is done as the intervals are loaded so that the
initialization (before the first replay) and reset (before subsequent
replays) use consisent alignment.

Change-Id: Icb1a1ba5fc0045fc4ec1ccbfe9caad06154f2338
2019-09-05 10:51:02 +01:00
baldurk 16164d5157 Fix off-by-one error accessing deferred shadow buffers in D3D11 record 2019-09-05 00:55:35 +01:00
baldurk 205ec0ecf8 Update misaligned dirty demo to have interesting data in all bytes 2019-09-04 18:40:43 +01:00
baldurk bae2ea3767 Add demo program that misaligns the dirty region of a buffer 2019-09-04 18:13:41 +01:00
baldurk 6db13115a3 Fix access to array after target element has been removed 2019-09-04 16:22:29 +01:00
baldurk 60faef5ce5 Fix byte size calculation of ETC2 format textures 2019-09-04 15:40:51 +01:00
baldurk c761f675c4 Add test that SPIR-V 1.3 shaders are disassembled, reflected, and edited 2019-09-04 14:33:13 +01:00
baldurk c9e668cdfc Create highest vulkan instance possible in tests, and save version 2019-09-04 13:17:11 +01:00
baldurk 244d96c1cd Reduce log spam when creating proxy drivers 2019-09-04 10:43:22 +01:00
baldurk 1cd2b4fc0a Don't enable counter libraries when running as a replay proxy 2019-09-04 10:42:40 +01:00
baldurk b0cc357933 Ensure D3D init params are fully initialised including adapter desc 2019-09-04 10:41:37 +01:00
baldurk 01c1b5bc71 Respect RENDERBUFFER target in glCopyImageSubData. Closes #1509 2019-09-03 14:40:06 +01:00
baldurk cd8fccc19b Fix crash with fetching mesh output if no descriptor sets are bound 2019-09-03 10:43:25 +01:00
baldurk 60ae75d810 Fix wrong return type on SDObject 2019-09-03 10:36:17 +01:00
baldurk 3d33d9f961 Fix compilation on mac 2019-09-02 19:52:46 +01:00
baldurk 3aeada9fa5 Don't use deprecated vulkan enum values 2019-09-02 16:24:15 +01:00
baldurk 6e7f5691b5 Handle 0-length strings correctly when doing reflection emulation 2019-09-02 16:14:51 +01:00
baldurk 224b1877f4 Remove dangling 'using std::string' 2019-09-02 15:20:19 +01:00
baldurk 6d40bbb783 Add experimental wayland support. Refs #853
* This is only lightly tested and may break heavily. It is disabled by default
 and must be explicitly enabled.
* In particular this is only known to work for Wayland use at capture time.
 Wayland on replay is still unsupported. Known issues include: EGL pbuffer
 surfaces are not implemented on Wayland, Wayland cannot get window dimensions,
 and there are hangs/failures with GL and vulkan presentation with Wayland.
2019-09-02 15:02:27 +01:00
baldurk 9b501d88a1 Initialise shaders to 0 2019-09-02 14:34:20 +01:00
baldurk 16dd362db1 Revert "missed one change for the vulkan in app api capture fix"
This reverts commit da289fdbcc.
2019-09-02 14:02:04 +01:00
baldurk 8246c01198 Revert "fixed in app api capture"
This reverts commit 98b623cfcc.
2019-09-02 14:01:52 +01:00
baldurk 2d0b18b18b Don't crash if shader viewer is closed while shader compilation is going 2019-09-02 12:54:08 +01:00
baldurk 1107462f05 Use pipeline layout from descriptor set binds to iterate descriptor sets
* If a pipeline doesn't statically access a descriptor set, the corresponding
  descriptor set layout in its pipeline layout can be essentially anything and
  it doesn't have to match the actual descriptor set bound at a draw. It's just
  ignored.
* Rather than check for static access ourselves we take advantage of another
  fact - when the descriptor set is bound it must be compatible with the set
  layout from the bind call's pipeline layout. If the pipeline *does* statically
  use the descriptor set, its pipeline layout must be compatible with the bind
  call's pipeline layout for that set.
* So the end result is that we can safely use the bind call's pipeline layout
  for iterating over bound descriptors, secure in the knowledge that it's always
  valid for that data, and if the pipeline uses it then it's also valid for the
  pipeline.
2019-09-02 12:19:37 +01:00
baldurk e6d0c93b41 Fix wrong Qt cmake variable for qmake command being used 2019-09-02 11:37:55 +01:00
baldurk e15a10a0e6 Don't bind GL_QUERY_BUFFER if the extension isn't supported 2019-08-30 11:54:33 +01:00
baldurk 608c283c9b Use all non-negative shader lengths, not just positive. Closes #1508 2019-08-30 11:54:30 +01:00
baldurk c6dd97947b Check that qmake runs successfully and check Qt version 2019-08-29 11:21:58 +01:00
baldurk 2253c4e75d Don't include NULL in ID3D12CommandQueueDownlevel::Present marker 2019-08-29 10:37:32 +01:00
baldurk 061a376901 Fix D3D12 tests to run on D3D12On7 2019-08-29 10:20:38 +01:00
baldurk 096e5af08b Fix graphics tests to pass default replay options to OpenCapture 2019-08-29 10:02:29 +01:00
baldurk 12f08aa47f Take GL lock in WGL context functions 2019-08-28 23:10:47 +01:00
baldurk 0f3614a826 Fix preallocated chunk size for GL driver init 2019-08-28 23:06:03 +01:00
baldurk af710fe021 Add additional fallback path for fixing XFB varyings on GL
* On AMD's driver at least the reflection for a separable vertex program
  includes all declared outputs even if they're statically not written in the
  vertex shader. However trying to use these as XFB varyings fails.
* Unfortunately this makes it impossible for us to use our typical reflection to
  determine what outputs to write, so instead we make a last ditch attempt to
  get things working and link the non-separable program we're about to use for
  XFB and reflect that again, then use the reflection to remove items from the
  varyings and replace them with gl_SkipComponentsN.
2019-08-28 18:55:12 +01:00
baldurk ab05d4cbc8 Fix OpenGL SPIR-V compilation using external glslc in tests 2019-08-28 18:07:56 +01:00
baldurk f7b60f6d82 Fix SINGLE_FLUSH_VALIDATE crash with no queue/device available 2019-08-28 17:12:13 +01:00
baldurk 422cd728ad Move available GPU check onto thread at startup
* This hides a stall when first opening a window that needs the list of GPUs.
2019-08-28 15:34:28 +01:00
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