Commit Graph

8954 Commits

Author SHA1 Message Date
baldurk ada97bf7bd Only reference dirty resource list at capture begin time. Closes #1309
* The problem with trying to keep the list of dirty resources identical at the
  start and the end of the capture is that resources being deleted or dirtied
  mid-frame causes problems. For the latter we have 'pending dirty' ugliness,
  for the former we weren't properly handling it in all cases. Instead just
  prepare initial contents from dirty resources, then use the list of resources
  that had initial contents prepared to determine which should be saved.
* This means resources freed mid frame are fine, as long as we hold onto their
  resource records and initial contents which we do. It also means the pending
  dirty handling can be removed and we can just dirty resources as soon as we
  want - it will be ignored mid-frame and apply to subsequent frames.
2019-05-14 15:30:55 +01:00
baldurk 9d4b9034c5 Don't try to look up current texture bind state for proxy textures 2019-05-14 15:30:55 +01:00
baldurk fe2aaa60dc Handle stencil-only backbuffers 2019-05-14 15:30:55 +01:00
baldurk 886c20f580 Allow creating initial states for any resource type when necessary 2019-05-14 15:30:55 +01:00
baldurk 077d95e05a Fix applying program pipeline initial states
* We need to update our internal tracking, and handle GL's non-ordered shader
  bitmask.
2019-05-14 15:30:55 +01:00
baldurk 13ed3dfe0e VAOs and FBOs shouldn't mask the reference type to read only 2019-05-14 15:30:54 +01:00
baldurk a8694e6a27 Mark resources as written when their state changes
* This forces initial state snapshotting creation even if initial states weren't
  saved for the resource initially.
2019-05-14 15:30:54 +01:00
baldurk a01cd2c37b Mark containers like VAO or XFB as written on implicit buffer binds 2019-05-14 15:30:54 +01:00
baldurk e73bb1ff94 If a glBufferData call on replay resizes a buffer down, don't allow it 2019-05-14 15:30:54 +01:00
baldurk 3690e8908a Sync to GPU when fence is signalled on a queue
* Dynamic descriptor writes that happen after a fence sync must be synchronised
  against the work on queues. Since we don't capture CPU-waits on fences we need
  to sync on the signal.
2019-05-14 15:30:54 +01:00
baldurk 5a18717b6e Add D3D12 helper to set descriptor table parameter offset 2019-05-13 19:07:23 +01:00
baldurk 37d3320847 Don't process split of an empty string 2019-05-13 19:07:23 +01:00
amhagan 4f06af0eb3 Add HDR Extensions
Add support for VK_AMD_display_native, VK_EXT_full_screen_exclusive, and VK_EXT_hdr_metadata.
2019-05-13 10:50:33 -07:00
baldurk 652e77c2f9 Always create proxy buffers on D3D11 as just VB and IB
* We don't use proxy buffers for anything else so it's safe to ignore other
  creation flags. This way we don't get problems with more flexible APIs like
  vulkan allowing buffer usage combinations that are illegal on D3D11.
2019-05-10 23:51:08 +01:00
baldurk 4520dcbaa2 Adjust offset used in VB string if there was padding bytes 2019-05-10 23:50:32 +01:00
baldurk 3b5dec17fc Reset pack state, not unpack state, when fetching texture data 2019-05-10 18:25:48 +01:00
baldurk 301e3b0b3a Handle FRONT_AND_BACK in our emulated backbuffer FBO remapping 2019-05-10 18:25:48 +01:00
baldurk 4582056de0 Avoid calling glCopyImageSubData on Qualcomm as some drivers have bugs 2019-05-10 18:25:48 +01:00
Alex Vakulenko ca2307e34c Make it possible to write chunks larger than 4 GB
Added a special chunk flag indicating that chunk size is a 64 bit value.
This allows to handle larger chunks (which heppens quite rarely) while
still maintaining backward compatibility with the majority of traces.

Bumped RDC file version of 0x101 (1.1) to make sure older version cannot
read the new file format.
2019-05-10 10:25:26 -07:00
baldurk cfa5dd3ea5 Add more specific errors if DLL injection fails 2019-05-08 14:11:15 +01:00
baldurk bd85073bb7 Fix tests using old CreateHeadlessWindowingData() function 2019-05-08 14:11:15 +01:00
Aaron Hagan 36102f6ccc Add Vulkan SDK 1.0.106 Header Files
Added 1.0.106 vulkan header files and renamed the following enums and structures.

sname:VkPhysicalDeviceShaderDrawParameterFeatures -> slink:VkPhysicalDeviceShaderDrawParametersFeatures;
sname:VkPhysicalDeviceBufferAddressFeaturesEXT    -> slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;

etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES      -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES; etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR  -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR;
etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT    -> ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT.
2019-05-07 09:34:37 -07:00
baldurk 5c28bd0a31 Add a parameter to allow saving RGB PNGs 2019-05-06 15:57:02 +01:00
baldurk 7db90232f9 Allow creating completely headless outputs and reading back their output
* This is useful when writing automated tests that want to test the output of
  rendering which only happens to outputs, such as mesh rendering, or could
  potentially be bypassed with direct readback like GetTextureData vs rendering
  a texture.
2019-05-06 15:52:43 +01:00
baldurk ad038ff3e0 Add a log message when running as administrator 2019-05-06 12:25:31 +01:00
baldurk 7ca902f2e5 Handle fences in D3D11's IdentifyTypeByPtr. Closes #1374 2019-05-06 11:29:51 +01:00
baldurk 60a4877c68 Add test that aliased entry points on GL are recorded faithfully 2019-05-03 12:32:44 +01:00
baldurk a42220a035 Add helpers to set/push/pop markers on GL 2019-05-03 12:27:21 +01:00
baldurk 2ae29bbecb Try to avoid crashing if a failed map is used mid-capture 2019-05-03 11:37:17 +01:00
baldurk cd9ab1c9db Add test of GL_Buffer_Updates 2019-05-03 11:36:34 +01:00
baldurk 1bef46bfee Add a debugger friendly option to the python test framework
* This suppresses the use of a global try/except to catch exceptions then log &
  continue. Instead it runs the test and lets the debugger catch any exceptions
  that happen.
2019-05-03 11:13:52 +01:00
baldurk a32bbb8232 Fix version check for GLES 1.x. Refs #1372 2019-05-03 11:08:46 +01:00
baldurk b680d74efd In python tests allow comparing RGB and RGBA PNGs
* We force the missing alpha channel to full 255 on all pixels.
2019-05-03 11:00:59 +01:00
baldurk fa4a6d431b Only use modern extension query on new contexts. Refs #1359
* On mac on legacy contexts (GL2.1) glGetStringi will understandably fail
  completely, so we can't expect to be able to use modern enumeration of
  extensions on the assumption that it's really a compatibility context.
2019-05-02 17:24:57 +01:00
baldurk 95391e3604 Account for specified string lengths when storing GL source strings 2019-05-02 14:59:58 +01:00
baldurk 32b93600b3 Fetch enough fixed function GL entry points to render legacy overlay 2019-05-02 14:29:39 +01:00
baldurk 005a1964ee Check for GL profile on macos to determine if context is core or compat 2019-05-02 14:29:19 +01:00
baldurk 63b3f3dfe9 Fix execution of set_plist_version.sh and ln on mac qmake build 2019-05-02 14:02:58 +01:00
baldurk 06c6b7e8de Software emulate KHR_debug so that applications can use annotations
* Even if the driver doesn't support it (i.e. on macOS) we can still allow
  applications to name objects and add frame markers, they just won't get any
  debug output.
2019-05-02 13:30:26 +01:00
baldurk c515065dcf Fix linux launching of adb server 2019-05-02 13:30:26 +01:00
baldurk 225e34c592 Fetch D3DCompiler on demand rather than at dll init
* This incurs a bit of a load-time hit that might not be needed until later.
2019-05-02 13:30:26 +01:00
baldurk 87c4d529c0 On replay don't initialise dbghelp at startup, instead init on demand 2019-05-02 13:30:26 +01:00
baldurk c7bd434024 Don't compile Catch2 into release builds 2019-05-02 13:30:26 +01:00
baldurk 346d01b17a Shadow texture state by type, not just by unit
* When you do glTexImage2D(GL_TEXTURE_2D) it should refer to the last 2D texture
  bound to the currently active unit, even if a 3D or other type of texture was
  bound in between. Previously we only tracked per-unit and ignored the type.
2019-05-02 11:05:16 +01:00
baldurk ac7801b738 extended_thumbnail section in xml format can be in between sections 2019-05-02 10:27:41 +01:00
baldurk 6d5d536dc6 Add check for glMap failing 2019-05-01 21:11:49 +01:00
baldurk bcd693be6f Set texture filtering to NEAREST when copying images for initial states 2019-05-01 21:11:49 +01:00
baldurk cce6800f00 Remove NO_ERROR flags on EGL, as we do on WGL and GLX 2019-05-01 21:11:49 +01:00
baldurk 2c44004f80 Add handling for some legacy formats like LUMINANCE/ALPHA
* These are still around on GLES so we need to support them.
2019-05-01 21:11:49 +01:00
baldurk 83501f8226 Ensure mesh display cached pipelines are initialised to NULL 2019-05-01 21:11:48 +01:00