Commit Graph

8834 Commits

Author SHA1 Message Date
baldurk a5c55c3239 Clarify links to nightly builds a little 2019-04-09 11:09:21 +01:00
baldurk ee76ed7a4c Sanitise []s out of vertex attribute names when opening buffer viewer 2019-04-05 17:16:16 +01:00
baldurk eba59ecd39 Enable XFB physical device features if we enable the extension 2019-04-05 16:22:28 +01:00
baldurk 5b10d2f794 When recreating pipelines, don't make them derivatives 2019-04-05 14:23:01 +01:00
baldurk 13c9718858 Preserve expansion when changing events in vulkan pipeline state view 2019-04-05 13:25:28 +01:00
baldurk 4311b35038 Tidy up RDTreeView expansion handling 2019-04-05 13:22:33 +01:00
baldurk 77269327ef Add EXT_descriptor_indexing test
* This is a simple test using descriptor indexing in fragment and compute
  shaders, with sampled images and storage buffers, including passing bindless
  arrays through functions to be sure that's tracked properly.
* There's also a define to turn on a reasonably bad case (though not
  worst/extreme) of # of descriptors - roughly 5 million descriptors allocated
  in total, with roughly 1 million bound at draw time.
2019-04-05 09:19:23 +01:00
baldurk 636b27549d Enable support for EXT_descriptor_indexing. Closes #1111 2019-04-05 09:19:22 +01:00
baldurk f256218e17 Pass bindless feedback data to UI through vulkan pipeline state
* Each binding element within an arrayed descriptor has a bool indicating if
  it's dynamically used or not (which will be set to true if the feedback isn't
  available). Each descriptor has a uint32_t indicating how many elements are
  dynamically used - which is useful for the UI to hide the root of an array
  that has no used elements, or to heuristically decide whether to expand or
  elide the contents.
2019-04-05 09:19:22 +01:00
baldurk 7f56704a92 Feedback dynamic shader access to arrayed descriptors
* We use VK_EXT_buffer_device_address where possible to reduce code complexity &
  increase compatibility, but when not available we reserve a buffer within the
  existing bindings.
* Only array descriptors have the feedback run. Non-array descriptors can still
  be dynamically used/unused but it's expected that there is less pressure to
  trim the list as this would only account for flow control and there is value
  in showing bindings that may be dynamically unused. For arrays the size might
  potentially be extremely large (with 'bindless' type arrays) so reducing it
  only to the set of used items is important.
2019-04-05 09:19:22 +01:00
baldurk 9e4a64e1eb Add locking around access to descriptor set references
* With VK_EXT_descriptor_indexing descriptor sets can be updated while a
  submission is going on, leading to potentially parallel access to the
  references.
2019-04-05 09:19:22 +01:00
baldurk 4ff4a7910e Defer processing dirtied objects in descriptor binds until submit time
* With VK_EXT_descriptor_indexing, the contents of descriptor sets at bind times
  are (conservatively) meaningless as they may be updated/changed right up until
  submit time with the right feature flags enabled. So instead of marking
  resources conservatively dirty at bind time, we do it at submit time. It's
  invalid for an application to except multiple versions of a descriptor set to
  get applied, so sampling once at submit time is sufficient.
2019-04-05 09:19:22 +01:00
baldurk 2c583b66f6 Add initial VK_EXT_buffer_address capture/replay implementation
* The extension is not yet whitelisted as there is no solution currently for
  feedback on used bindings or handling of pointers in data structures within
  the UI or shader reflection.
2019-04-05 09:19:22 +01:00
baldurk 32179d683d Fix idOffsets values when adding OpNops for empty SPIR-V sections 2019-04-05 09:19:22 +01:00
baldurk 046cbf9a42 Disable WGL hooks completely when EGL is hooked. Closes #1336 2019-04-04 18:35:30 +01:00
baldurk f13b7ec102 Don't actually call a flush into GL for "virtual" coherent map flushes 2019-04-04 18:23:48 +01:00
baldurk 045adf41cd Add handling for PVRTC enums on GL 2019-04-04 18:22:40 +01:00
baldurk 7294eb7753 Implement support for VK_EXT_ycbcr_image_arrays 2019-04-04 16:27:20 +01:00
baldurk 60c92b2d84 Implement support for VK_EXT_depth_clip_enable 2019-04-04 16:23:35 +01:00
baldurk 50b0456ae6 Implement support for VK_EXT_pipeline_creation_feedback 2019-04-04 15:50:34 +01:00
baldurk 8f0917e189 Implement support for VK_EXT_host_query_reset 2019-04-04 15:50:34 +01:00
baldurk ccd5ba218e Explicitly shutdown only the running test, instead of using destructors
* The tests are global objects so there's a potential ordering issue of
  destroying these tests after RenderDoc's global destructors have run.
2019-04-04 15:50:34 +01:00
baldurk 043fcda299 Fix check for external glslc 2019-04-04 15:50:34 +01:00
baldurk 3cc2c37149 Don't crash on linux if getenv() returns NULL for unknown variable 2019-04-04 15:50:34 +01:00
baldurk d351ac9ea4 Update to 1.1.105 vulkan headers 2019-04-04 15:50:24 +01:00
baldurk fb826ee724 Fix the set of queues made available to initial state CONCURRENT buffers
* We don't want to enable all queues on the physical device because not all of
  them are necessarily enabled in the device itself.
2019-04-04 13:11:18 +01:00
baldurk ff5f946e1e Don't transition images to UNDEFINED if that's their initial known state 2019-04-04 13:10:29 +01:00
baldurk f742344c95 Serialise basePipelineIndex properly instead of as empty
* Setting it to empty is invalid for derived pipelines - since we don't want the
  index to be 0 we want to use basePipelineHandle. We patched it to -1 before
  serialising so the value is safe.
2019-04-04 12:31:35 +01:00
baldurk d44a00c898 When replaying specific GL extension functions, check availability
* In theory we should check everywhere on every function otherwise we crash with
  a NULL pointer, but figuring out which functions to check is non-trivial in
  some cases and there's the risk of false positives with fallbacks available
  etc in cases where there are several possible alternatives for a given
  function.
* These checks have been sprinkled around in places where it's safe because
  there's only one implementation of a function that never made it to core, as
  well as the most common problems - glFramebufferTexture2DMultisampleEXT and
  glFramebufferTextureMultiviewOVR/glFramebufferTextureMultisampleMultiviewOVR
  which comes from users mistakenly replaying a mobile capture on desktop. This
  is not expected to work but it shouldn't crash.
2019-04-04 11:49:30 +01:00
baldurk c7ea78022c Identify ARM64 as ARM correctly in machine ident 2019-04-04 11:34:49 +01:00
baldurk 3b4f283719 Fix & clamp array/sample indexing for MSAA array texture display 2019-04-03 16:42:41 +01:00
baldurk 4319c5c2ab Calculate the slice properly for viewing MSAA textures as buffers 2019-04-03 16:42:41 +01:00
baldurk a031359288 Fix image view types for MSAA array support 2019-04-03 16:42:41 +01:00
baldurk cb47684766 Create and bind a dummy fragment shader for xfb on GLES
* On GLES it's illegal to have just a vertex shader in a program, unless that
  program is separable
2019-04-03 16:42:41 +01:00
Aliya Pazylbekova fe5c48ff35 Update version of VK_EXT_debug_marker in manifest 2019-04-01 13:19:14 -07:00
baldurk 7ac31e5ca7 Workaround ARM driver bug with core promoted function. Closes #1322
* glRenderbufferStorageMultisample and glRenderbufferStorageMultisampleEXT
  should be interchangeable, with the only difference being the EXT version
  specifies that tile resolves may happen and MSAA data won't be preserved.
* When aliasing the functions RenderDoc will call the core version if available
  even if the application called into the EXT, assuming them to be
  interchangeable (and in this case the core function is a superset of
  functionality). Unfortunately on ARM's driver attachments of different types
  are not handled properly and FBOs can fail to create.
* The only available workaround for this is to copy-paste the function
  implementation and keep them separate, and assume that the application does
  the right thing and ends up with compatible attachments. The app could easily
  break in the same way, but at least then RenderDoc is not forcing a bug to be
  hit.
2019-04-01 15:45:24 +01:00
baldurk edc99c4c4a Update object-to-ResourceId patching for new debug message format 2019-04-01 15:23:27 +01:00
baldurk 4c3a68d866 Add a couple of setName overloads in VulkanGraphicsTest 2019-04-01 15:23:27 +01:00
baldurk 1cada82d2f Use VK_EXT_debug_utils in testbed program 2019-04-01 15:23:27 +01:00
baldurk fa06d29077 Strip VK_LAYER_KHRONOS_validation 2019-04-01 14:26:04 +01:00
baldurk ff354e57e6 Add handling for EXT_debug_utils for gathering debug messages
* Where possible we use it as we expect potentially better message formatting &
  more info we can use in future
2019-04-01 14:25:49 +01:00
baldurk afb7fa3771 Add handling for MSAA Array textures on GL/GLSL shaders. Closes #1333 2019-04-01 14:21:52 +01:00
baldurk 4bdc07a770 Don't create MSArrayCopyVS on its own as we don't need it without PS
* It will fail to create on FEATURE_LEVEL_9 devices
2019-03-29 18:13:12 +00:00
baldurk fc8203ed6c Make D3D11 overlay rendering FL9 compatible. Closes #1332 2019-03-29 17:48:15 +00:00
baldurk 6e3c4aaf49 Don't use m_pReal2 for IDXGISwapChain1 functions 2019-03-29 17:48:15 +00:00
baldurk bd615a04da Update SPIR-V stringise for latest SPIR-V headers 2019-03-29 17:48:15 +00:00
baldurk 7cef20fde5 Add missing demo project tests to CMakeLists.txt 2019-03-29 17:48:15 +00:00
baldurk 3d2fa8cd3e Optimise RichResourceText to special-case for single ResourceId text
* Most cases don't have other text together with a ResourceId, so handle an
  isolated ResourceId specially and manually render it.
* Further work - we could cache the name the same way as the RichResourceText
  does. So far it doesn't seem to appear on profiling.
2019-03-29 17:48:15 +00:00
baldurk a44b85bd76 Don't use StringFormat::Fmt for ResourceId stringise
* This is high-frequency enough that it's worth doing an in-place int-to-string
  conversion.
2019-03-29 17:48:15 +00:00
baldurk ad6c050604 Handle displayAsHex in constant buffer preview formatter 2019-03-27 19:34:26 +00:00