Commit Graph

8062 Commits

Author SHA1 Message Date
baldurk ea9bb452a3 Fix link to interceptor-lib README in compile instructions 2018-10-18 11:07:31 +01:00
baldurk cc254a56eb Adjust verbosity of replay proxy log statements 2018-10-17 17:56:06 +01:00
baldurk f712944c31 Don't look up invalid instruction on final shader debug step 2018-10-17 17:34:38 +01:00
baldurk 8da2a0764d Remove unused debug code that can index off the end of a vector 2018-10-17 17:21:49 +01:00
baldurk eb18d41f9a Detect read-only GL persistent maps & skip intercepting them. Refs #1128 2018-10-17 16:11:21 +01:00
baldurk f3ab6409c0 On desktop GL, emulate glClearDepthf if it's not available 2018-10-17 15:50:52 +01:00
baldurk 2b5a961308 Disable Array2MS compute shader entirely on GLES 2018-10-17 15:50:32 +01:00
baldurk 9280538fea Don't declare GL_ARB_compute_shader extension on GLES 2018-10-17 15:46:26 +01:00
baldurk e0a185655d Emulate ARB_dsa functions that are used where no EXT variant exists 2018-10-17 15:44:17 +01:00
baldurk c45023236a Perform image processing at 32bpp for HDR/EXR/DDS outputs. Closes #1103
* When flattening array slices or remapping to a cube cruciform, we can remap to
  RGBA32 when the output format is itself greater than 8bpp, to ensure we don't
  lose quality before output.
2018-10-17 15:38:53 +01:00
baldurk d06ea5b8a4 Implement texture remapping to RGBA16/RGBA32 for D3D11/D3D12 2018-10-17 12:48:18 +01:00
baldurk bc52dd6c5f Set vertex buffer/attrib offsets to 0xDEADBEEF if they're pointers
* This helps reduce noise of serialising user pointers in the capture
2018-10-17 11:42:49 +01:00
baldurk 7c31f3f171 Don't use glMapBufferRange to read indices, as it may not allow MAP_READ 2018-10-17 11:41:28 +01:00
baldurk 04fb615e3d Fix extension sorting 2018-10-16 17:29:42 +01:00
baldurk b5854f0fec Implement VK_EXT_transform_feedback, and use it for mesh output
* For pipelines using tessellation or containing a geometry shader we use
  transform feedback to fetch the output of the vertex pipeline after these
  stages.
2018-10-16 16:53:03 +01:00
baldurk 4dd74c9290 Fix display of stream-out in D3D pipeline state viewers 2018-10-16 16:26:23 +01:00
baldurk a9f814513b Set groups to Expanding instead of MinimumExpanding 2018-10-16 16:26:23 +01:00
baldurk 1210f1fd42 Add pipestate.h to swig interface dependencies 2018-10-16 16:26:22 +01:00
baldurk dafefe6492 Only bail on exact match of file against shell processes. Closes #1118 2018-10-16 16:26:22 +01:00
baldurk f31c61f714 Don't try to delete from non-existant TLS list 2018-10-16 16:26:22 +01:00
baldurk b9e92d950b Allow VK_GOOGLE SPIR-V semantic extensions, and VK_EXT_pci_bus_info
* Both require no work to support
2018-10-16 16:25:57 +01:00
baldurk adc2675e3e Update vulkan headers to 1.1.88 2018-10-16 16:25:57 +01:00
baldurk 69287da9ac Handle inserting from rdcarray into itself
* This self-insertion has the same kind of problem as overlapping ranges in
  memcpy, the act of inserting items can affect the input range by shifting
  things around. For inserting a single object we just copy it, for inserting a
  range we duplicate the whole array and then do the insert from the old range
  (and destruct it).
* Clearly this is not the most efficient implementation, a better solution would
  be to append onto the existing array (potentially not even reallocating then)
  and doing a rotate/shift in place.
2018-10-15 17:30:34 +01:00
baldurk 9a3c316fee Add keepalive packets if necessary around slow remote server calls 2018-10-12 19:37:03 +01:00
baldurk e511ae1e3e Add debug logging around replay proxy, and more error/integrity checking 2018-10-12 18:29:11 +01:00
baldurk e6d2f13a0d Handle TIMEDOUT the same as WOULDBLOCK when doing blocking recv/send 2018-10-12 17:30:18 +01:00
baldurk abd8c8e640 Add EPIPE error message 2018-10-12 16:30:25 +01:00
baldurk 005dcc693c Fix incorrect comment on VK_MVK_moltenvk extension enable 2018-10-12 15:27:05 +01:00
baldurk 48af22530c Fixes for flattened single-draw indirect draws 2018-10-12 13:04:57 +01:00
baldurk 648d261185 Add FREE_DESCRIPTOR_SET_BIT when creating pool that we'll free from 2018-10-12 13:00:28 +01:00
baldurk 3766c43ee5 Fix path conversion to windows paths when preparing symbols 2018-10-12 11:25:45 +01:00
baldurk 13e03b79b5 Add typename for template parameter 2018-10-11 19:45:57 +01:00
baldurk 9872b87e7b Remove extra \ that snuck into code 2018-10-11 19:40:23 +01:00
baldurk 03cddbf283 Add support for VK_KHR_create_renderpass2 2018-10-11 19:18:36 +01:00
baldurk d8dc4d95ec Add support for VK_KHR_shared_presentable_image 2018-10-11 19:18:35 +01:00
baldurk 2b7070eddf Allow a few EXT & IHV vulkan extensions
* VK_EXT_astc_decode_mode
* VK_EXT_swapchain_colorspace - this will cause slight artifacts as we won't
  interpret pixels in the right color space, but it's minor.
* VK_EXT_validation_cache - we don't serialise this but we do allow it during
  capture and pass-through straight. We don't wrap the VkValidationCacheEXT
  object at all which makes support simpler.
* VK_EXT_external_memory_dma_buf - this is just a new memory type for external
  memory, we don't need to do anything special to handle it.
* VK_AMD_mixed_attachment_samples & VK_AMD_shader_core_properties - these are
  no-op once enabled
* Many shader-only extensions:
  - VK_AMD_gpu_shader_int16
  - VK_AMD_shader_fragment_mask
  - VK_AMD_image_load_store_lod
  - VK_AMD_texture_gather_bias_lod
  - VK_NV_compute_shader_derivatives
  - VK_NV_fragment_shader_barycentric
  - VK_NV_geometry_shader_passthrough
  - VK_NV_sample_mask_override_coverage
  - VK_NV_shader_image_footprint
  - VK_NV_shader_subgroup_partitioned
  - VK_NV_viewport_array2
2018-10-11 19:18:02 +01:00
baldurk 48f4ac3edb Re-fetch original function pointers if hooked DLL reloads somewhere else 2018-10-11 14:58:50 +01:00
baldurk bd394bdd74 Allow VK_KHR_incremental_present
* Untested, but present regions shouldn't affect our operation.
2018-10-11 14:58:49 +01:00
baldurk a4c12e7fa2 Add special case when the count/maxcount for indirect draw is 0. 2018-10-11 14:58:49 +01:00
baldurk 0bbf24bede Add support for VK_KHR_draw_indirect_count 2018-10-11 14:58:49 +01:00
baldurk 4042dcab68 Use StructuredSerialiser to create fake objects for indirect calls 2018-10-11 14:58:49 +01:00
baldurk 4e9c42e250 Add serialisers for indirect draw structs 2018-10-11 14:58:49 +01:00
baldurk 6744802a53 Add StructuredSerialiser which allows serialising to SDObjects directly 2018-10-11 14:58:48 +01:00
baldurk 9ff71eb175 Readback indirect draw arguments and patch in later. Closes #1066
* This reads the argument once during load exactly when the draw itself
  executes. We read just before the draw in case the draw itself would modify
  the params (which is likely invalid, but something we should avoid).
2018-10-11 14:58:48 +01:00
baldurk eec6efc692 Add default case to switch statement 2018-10-11 12:19:06 +01:00
baldurk a6714f4e82 Use correct context to flush with 2018-10-11 11:14:05 +01:00
baldurk ccf85076b7 Add context flush to MSAA -> Array copy. Refs #1119
* The previous flush was in Array -> MSAA which is not used during capture.
2018-10-11 11:09:37 +01:00
baldurk b9b194aa9e Fix natvis for structured data 2018-10-11 11:09:37 +01:00
baldurk d7b4609cbe When formatting storage buffers in vulkan there's no root struct to skip 2018-10-11 11:09:37 +01:00
baldurk 873d6e4d0a Set previous/next pointers on marker drawcalls
* Even if marker drawcalls aren't themselves in the linked list, it's very
  convenient to have their previous/next link to the next node on the list
  itself, so that if you search and find one from the list of drawcalls you'll
  still be able to iterate normally.
2018-10-11 11:09:37 +01:00