Commit Graph

4114 Commits

Author SHA1 Message Date
baldurk 19ecf36b13 Compile fix for linux with added void* cast 2017-07-06 12:23:15 +01:00
baldurk 3a47aa7840 Support captures where programs are created mid-frame. Refs #684
* This is far more likely when you start capturing at the start of the
  program, but it can happen any other time if you get unlucky.
* Normally we expect the preparation of initial states for programs to
  get all the data ready, but if the program is created during the frame
  capture then that's after preparation, so we need to instead fetch and
  serialise the data at the end of the frame while serialising initial
  contents.
2017-07-06 11:54:06 +01:00
baldurk 750bea339f Add support for queueing capture of a first frame in GL
* This isn't reliable in GL since context creation is such a mess, but
  we go from the first attribs-based context create to the next present.
* Should allow capturing early setup and creation before the first
  render.
2017-07-06 11:53:07 +01:00
baldurk e8c39c956a Return texture ID directly from the image viewer replay driver
* The proxy replay driver might not report an 'internal' ID that doesn't
  have a true live ID, so instead we take responsibility for reporting
  it. The proxy will still return its details when prompted.
2017-07-06 11:51:03 +01:00
baldurk 96201c4762 Fix github wiki URL that didn't end up how I thought it would. 2017-07-05 22:12:19 +01:00
baldurk 358be1a357 Search for the ISA plugins in the arch-specific folders 2017-07-05 22:06:00 +01:00
baldurk e97fa159b5 Add a 'virtual' GCN ISA target when not supported to display error msg 2017-07-05 21:53:54 +01:00
baldurk e5f674635f Support 32-bit and 64-bit AMD driver DLLs for disassembly 2017-07-05 21:52:35 +01:00
baldurk 79101c7b13 Move DXBC shader friendly naming logic into C++ side code
* This makes more sense and lets us share it between Qt and C# UIs.
2017-07-05 20:37:49 +01:00
baldurk ecf88787d7 Add code to disassemble SPIR-V, glsl and DXBC into GCN ISA.
* Requires binary plugins to function from the RGA repository. These
  will be included with distributions (nightly and stable builds) where
  possible, however D3D disassembly currently requires the AMD driver
  DLL which cannot be distributed. Placing it in the folder with the
  other files will automatically work.
2017-07-05 20:37:48 +01:00
baldurk 13bf08a99e Remove disassembly from shader reflection, request it on demand 2017-07-05 16:31:44 +01:00
baldurk bdf2a68c71 Add shader's ID and entry point to the shader reflection struct
* This allows better identification of a shader from its reflection
  bundle. The entry point was already 'optionally' in the debug info
  struct which is no longer a great location for it.
* For APIs where the entry point isn't contractual and it might not be
  listed, instead we just fall back to 'main'. This means that the UI
  or anyone fetching the info can be guaranteed that some sensible entry
  point will be listed.
* Also for the debug info, remove the 'entryFile' index and instead just
  guarantee that as much as possible the entry point will be in the
  first file in the list.
2017-07-05 16:29:26 +01:00
baldurk c2b0c2d7d8 Add more compilation settings for SPIR-V, including source language
* This e.g. fixes the generation of SPIR-V for GL style GLSL with
  uniforms that are just global not in a UBO.
2017-07-05 16:29:26 +01:00
baldurk 7d5e047e66 Fix serialisation of rdctype::str to always NULL-terminate 2017-07-05 16:29:17 +01:00
baldurk cd0856cd4c Make sure to set m_LastCmdBufferID in vkCmdWaitEvents
* Without this, it's treated as a host operation not a queue/command
  operation and isn't placed correctly in the event stream.
2017-07-05 16:29:11 +01:00
baldurk e2a624e359 Add backwards compatibility code for breakage in 494427aac4
* When Common_preElements was removed, it lost some serialised data.
  Although we don't need it anymore, we at least need to serialise the
  bool indicating no data came from memory so that the serialisation
  lines up.
2017-07-05 16:29:10 +01:00
baldurk 9ffb37a092 Check for data pointer with HasDataPtr. Found by @EBatut-ALG. Refs #684 2017-07-05 16:29:10 +01:00
Cody Northrop ac38e7cb63 os: Add helper to find host temp directory 2017-07-05 16:29:10 +01:00
Michael Rennie ffc0ee909e UniformVector/Matrix ARM alignment workaround also needed for EXECUTING.
Driver apparently does not protect against non-alignment.
2017-07-03 02:32:44 -07:00
Janos Pantos 1fd5bfa4c6 Fix querying atomic counter buffer info
Since GLES doesn't support glGetActiveAtomicCounterBufferiv we use
glGetProgramResourceiv instead.
2017-06-30 03:47:33 -07:00
baldurk 9b913de877 Release references to duplicate states before re-using existing wrapper
* Fixes a dangling reference that ends up keeing the D3D11 device alive
  and so leaking a lot of memory each time the capture is opened.
2017-06-29 19:40:26 +01:00
Peter Gal beb570c286 Expose a set of GL ES extensions
List of exposed GL ES extensions:
* GL_EXT_clip_cull_distance
* GL_EXT_debug_label
* GL_EXT_debug_marker
* GL_EXT_blend_minmax
* GL_EXT_draw_elements_base_vertex
* GL_EXT_texture_type_2_10_10_10_REV
* GL_OES_draw_elements_base_vertex

All of these extensions already have implementations in RenderDoc
there was just missing entries in the allowed extensions list.
2017-06-29 06:41:54 -07:00
baldurk 5e5ec5de4b Don't set devices as parents of the instance
* This causes all devices to be included in the capture, when that isn't
  what we want. If the application creates and destroys some devices
  they must not be included in the capture or we end up with multiple
  devices and can use them in a inconsistent manner.
* The active m_Device is still marked as referenced in the frame so it
  will be pulled in that way.
2017-06-29 11:55:44 +01:00
baldurk 92c545ea06 Fix 32-bit compilation error with explicit VK_NULL_HANDLE comparison 2017-06-28 11:48:13 +01:00
baldurk f190f9af06 Fix global hook shim referencing removed functions
* It was still pointing at old functions, which have since been removed.
2017-06-28 11:24:02 +01:00
baldurk eb5a3f64d1 If RefAllResources is enabled, don't bother to track bound descriptors
* It's not needed as all resources will be included anyway, and it can
  save some time wasted on the tracking.
2017-06-28 11:18:21 +01:00
baldurk d71df3810f Set debug names on objects during replay
* Any 'default' names that just use the ID will be overwritten by any
  proper name the capture gives them.
2017-06-28 10:58:59 +01:00
baldurk 78aca86902 Add an extra GPU sync between submissions on different queues
* If the application did some CPU side synchronisation that's not
  visible in the capture (unlike a queue Wait() which we replay as a GPU
  sync) then there might be overlap that causes simultaneous use
  problems. So instead we sync between submissions on different queues
  to ensure we don't overlap by accident.
2017-06-28 10:54:29 +01:00
baldurk 29726388f6 Fix implementation of D3D12ResourceManager::SerialisableResource
* When referencing all resources we use this function to determine what
  should be excluded, and in this case we want to make sure that e.g.
  the device record and any swapchain records are included, but the
  queue/list records or frame capture record should be omitted as they
  will be included specially.
2017-06-28 10:50:01 +01:00
baldurk 68523abad9 Add a separate command list for data uploads
* Since D3D12 doesn't allow recording to multiple commands at once, if
  we end up doing a partial replay and including a data upload that uses
  a list to upload, we need a separate list and allocator.
2017-06-28 10:48:42 +01:00
baldurk f37079bff0 Use 64-bit counters for tracking compression sizes.
* There's still an issue lurking that the compressed size is stored as
  32-bit on disk, but at least now we don't store the uncompressed size
  as 64-bit but track it as 32-bit.
* The serialisation is going to change Soon(tm) anyway so this
  workaround should be enough for now, since hopefully compressed size
  is comfortably below uncompressed size.
2017-06-28 10:39:11 +01:00
baldurk cfcda0919b Workaround issue creating storage MSAA images on recent AMD driver 2017-06-26 11:13:59 +01:00
baldurk 6d89d451cd Switch orders of depth and stencil copies when restoring D/S 'MS' arrays
* This was previously needed to be stencil-before-depth to workaround an
  nvidia driver bug, but now depth-before-stencil works around a RADV
  hang and it no longer seems to be necessary for nvidia.
* The RADV issue is being fixed upstream but this is a 'free' workaround
  until that arrives.
2017-06-26 10:53:42 +01:00
Cody Northrop efac8d85ac android: Automatic install of RenderDoc server 2017-06-23 02:39:11 -07:00
Cody Northrop 48d759e289 android: Print stderr from adb commands 2017-06-23 02:39:11 -07:00
Cody Northrop cced0e695b Add endswith helper to string_utils 2017-06-23 02:39:11 -07:00
Cody Northrop 95225d12b4 Add IsRelativePath helper 2017-06-23 02:39:11 -07:00
Janos Pantos 506954ffb8 Use glClearDepthf instead of glClearDepth during replay in case of GLES
Because GLES doesn't support glClearDepth.
2017-06-22 11:37:41 -07:00
baldurk 094b9ebf35 Configure build to work with case fallthrough GCC7 warning. Refs #671 2017-06-22 14:20:23 +01:00
Christian Kellner 31f67f4c19 Add fallthrough comments to fix gcc warnings 2017-06-22 14:20:23 +01:00
baldurk 747afa7b74 Handle subpasses with all color attachments being UNUSED. Refs #670 2017-06-22 14:20:21 +01:00
baldurk 614b04a34f Check for an active replacement when naming command buffers. Refs #669 2017-06-22 14:20:18 +01:00
Tim Jones bcad28b4d0 Add initial D3D8 driver
Implemented overlay, but no capture or replay yet, so this is
functionally equivalent to the current D3D9 implementation.
2017-06-22 06:07:28 -07:00
baldurk 08cbddf063 Fix clang-format problems that were included
* My git hook got silently broken :(.
2017-06-21 22:20:00 +01:00
baldurk 57806148dd Allow descriptor set writes to be missing vulkan handles
* Since we don't mark descriptor sets or the written data as referenced
  until the descriptor set is actually used, any writes for sets that
  are otherwise unused might be missing the necessary objects.
* This is harmless though so we just make sure not to warn about them
  being missing as it gets spammy.
2017-06-21 21:17:20 +01:00
baldurk 72abd054c8 Make sure to pad allocations to allow for buffers on replay as well
* Capture allocations were already doing this, but we create a whole-mem
  buffer for replay allocations so we should also pad them up.
2017-06-21 21:16:13 +01:00
baldurk 4a73c69d1c Add SPIR-V disassembly of OpVectorExtractDynamic 2017-06-21 21:15:43 +01:00
baldurk 7e3e86f56f Don't apply graphics state to compute or copy command lists 2017-06-21 11:06:58 +01:00
baldurk ba91e82feb Don't try to replay maps with empty writes.
* This can lead to crashes if we try to optimise with a buffer upload
  and try to create a buffer of 0 bytes. Easier just to skip these no-op
  maps.
2017-06-21 11:06:21 +01:00
baldurk 734fa13443 Add support for __uuidof(ID3D12Device1) in D3D12CreateDevice
* Make sure to cast to/from the right interface when handling the void*
2017-06-21 00:03:44 +01:00