Commit Graph

7535 Commits

Author SHA1 Message Date
baldurk 83a0066f00 Add support for VK_KHR_image_format_list 2018-06-21 17:46:15 +01:00
baldurk 7958107bdc Clear GL array texture data cache in ReplayLog
* Otherwise the array data could be stale if we request the same array's data
  over again.
2018-06-21 17:46:15 +01:00
baldurk f1318b0961 Don't use LastCaptureFilePath for import file browser 2018-06-21 17:46:15 +01:00
baldurk 427f1fe0ac If a buffer is somehow 0 bytes, create it as at least 4 bytes
* This is harmless padding and will avoid some errors on creation.
2018-06-21 17:46:15 +01:00
baldurk 91ec7f6c81 On GLES in emulated glGetTexImage, do manual blit from ALPHA to R8
* We emulate the readback by creating an FBO, binding the texture, and reading
  it back. Unfortunately a texture with type GL_ALPHA can't be bound to an FBO,
  so the readback fails.
* As a fix, we do a manual draw to a temporary R8 texture with the same
  dimensions, then read it back the conventional way. This is wasteful but the
  only way.
* In future there may be other formats that can't be bound to an FBO but aren't
  compressed.
2018-06-21 17:46:17 +01:00
baldurk 6b9837e358 Make GL text rendering state pusher/popper available to code generally
* We also push/pop a couple more bits of state - ARRAY_BUFFER binding,
  RASTERIZER_DISCARD enable bit, and color mask
2018-06-21 11:32:23 +01:00
baldurk 5235b2e4b2 Check if RASTERIZER_DISCARD state is available 2018-06-21 11:32:14 +01:00
baldurk d8af674bcb Fix indexed color mask handling in renderstate 2018-06-21 11:32:14 +01:00
baldurk fb3c9ac992 Add support for some extensions that can just be pass-through
* VK_EXT_shader_stencil_export and VK_EXT_shader_viewport_index_layer are
  shader-only extensions that don't affect the postvs code.
* VK_EXT_depth_range_unrestricted lifts a restriction that we don't care about.
2018-06-21 11:32:14 +01:00
baldurk 3cc0d94f51 Set loader dispatch table on external queue command buffers
* Not really necessary as the loader will never see them, but it's more correct.
2018-06-21 11:32:14 +01:00
Remi Palandri 6085fe66e1 adding support for multiview and MSAA in GL replays 2018-06-21 11:31:48 +01:00
baldurk 67037ed4a1 Fix GLES initial state readback of compressed cubemaps 2018-06-20 22:31:32 +01:00
baldurk 44edfc64cc Handle eGL_UNSIGNED_SHORT_5_6_5 in GLTypeSize 2018-06-20 22:31:32 +01:00
baldurk 3eb522c316 Register any context's default framebuffer as a resource 2018-06-20 22:31:32 +01:00
baldurk dfaa632d2e Remove promotion of unsized formats to sized formats
* It turns out there are some corners of the spec where *only* an unsized format
  is valid, and a sized format that's at least as large will break, so the only
  way to fix this is to preserve unsized formats.
* This does mean things could break if the driver at replay-time makes a
  different decision about what sized format to pick, but hopefully that won't
  be an issue.
2018-06-20 22:31:32 +01:00
baldurk 4f65bb1b80 Ensure context pair is set up before creating per-context objects
* Without this, client-memory IBs/VBs will not have the correct context
  sharegroup set.
2018-06-20 22:31:32 +01:00
baldurk 7b63aa9546 Register some common classes with the crash handler to preserve
* This hopefully makes crash dumps more useful if we can get at their direct
  members reliably.
2018-06-20 22:31:32 +01:00
baldurk 4d763758d4 Fix some multi-queue bugs
* If the capture requires an external queue but never uses it (e.g. it has some
  resource that's on another queue and either incorrectly accesses it on the
  wrong queue or doesn't access it at all but still somehow has it referenced)
  we need an external queue - if we didn't find one in the capture by the time
  we get to ApplyInitialContents() we fetch it ourselves.
* We also fix up device creation info if we've remapped the queues into
  duplicates by having the replay with fewer queue families than capture.
2018-06-20 22:31:32 +01:00
baldurk 2fb575693d Allow equal EIDs for fake markers generated in core code 2018-06-20 22:31:31 +01:00
baldurk b3a49858ab Fix compilation on linux 2018-06-20 09:34:45 +01:00
baldurk dc8347262e Add support for ARB_gl_spirv. Closes #767 2018-06-19 20:48:30 +01:00
baldurk d7db77cd12 Remap default FBO in glClear*Buffer functions 2018-06-19 20:48:30 +01:00
baldurk 082c5e3d07 Don't delete context's own record when deleting context resources 2018-06-19 20:48:30 +01:00
baldurk fe910c4eab Add support for all GL 4.6 extensions except SPIR-V 2018-06-19 20:48:30 +01:00
baldurk c4c4c4b67d Display multiview state in vulkan pipeline state viewer 2018-06-19 20:48:30 +01:00
baldurk 53364adeef Support mesh output from different view indices on vulkan
* When using VK_KHR_multiview you can select which view to view the mesh data from.
2018-06-19 20:48:30 +01:00
baldurk ad2673965d Fix grep range in hookset.pl 2018-06-19 20:48:30 +01:00
baldurk e87eacb2a0 Fix switching between pipeline state viewers 2018-06-19 12:38:18 +01:00
baldurk 0795e739f9 Fix python docstring copy-paste error 2018-06-18 19:05:04 +01:00
baldurk 545d019a62 Exclude API Calls markers from previous/next list. Closes #868 2018-06-18 18:39:06 +01:00
baldurk 0dda96a045 Change previous/next/parent IDs in DrawcallDescription to pointers
* This is a legacy holdover from the C# interop not being able to preserve
  pointers easily.
2018-06-18 18:39:06 +01:00
baldurk f919ea81e2 Don't unwrap instance before calling wrapper. Closes #1012 2018-06-18 18:39:06 +01:00
baldurk 14e3a3d360 Move API-agnostic pipeline state wrapper into core interface
* There's no need for this to be in the UI, and moving it allows it to be used
  from script which is very useful.
2018-06-18 18:39:06 +01:00
baldurk 7ae6581a65 Remove assert on duplicate GPU Address ranges
* It's valid to have overlapping buffers on a heap, which could end up with
  overlapping ranges.
* It's impossible from the API to tell which buffer an address came from if
  there are multiple possibilities, but any of them will be technically correct,
  we just might display a different buffer than the user expected.
2018-06-18 15:41:05 +01:00
baldurk 8024c8c342 Store and serialise resources in D3D12 descriptors by id directly
* The problem with storing resource pointers in descriptors is that it can be
  invalidated without detection - a kind of A-B-A problem - if the resource is
  deleted and then another resource is allocated with the same pointer.
* Descriptor creation in D3D12 is extremely complex and there are many ways a
  resource could become incompatible with the descriptor metadata struct.
  Detecting all possible ways a new resource could be incompatible is not
  feasible.
* As a solution, we store the ResourceId which we know is immutable, serialise
  via the pointer, and keep the live ResourceId on replay. If the resource was
  deleted, the serialisation will fail because we look up the pointer at the
  point of serialise, and a deleted resource will end up being NULL.
* To try and abstract this away and avoid potential confusion with the
  ResourceIds, we make the descriptor contents private and provide accessors.
2018-06-18 15:20:08 +01:00
baldurk 11091f1e54 Tidy up python documentation and add examples 2018-06-15 19:44:37 +01:00
baldurk 45c3c27923 Rename DrawFlags::UseIBuffer to DrawFlags::Indexed 2018-06-15 19:40:54 +01:00
baldurk 4561b55464 Persist a default browse directory for file dialogs, if none is provided
* This provides a slightly more sensible default than the application working
  directory.
* The default is shared across all dialogs and open/save.
2018-06-15 19:40:54 +01:00
baldurk efd11bb7f2 Don't crash if OMSetRTVs is called with no RTVs and single handle flag 2018-06-15 10:34:05 +01:00
baldurk c737ecebba Fix mesh output with multiview - always output view 0 2018-06-15 10:10:22 +01:00
baldurk 093e8a6b40 Support NewFloatingArea and LastUsedArea properly in AddDockWindow 2018-06-14 17:57:31 +01:00
baldurk 68bd58a308 Fix typo in python docstring 2018-06-14 17:56:26 +01:00
baldurk bf70aeb64d Handle None being passed from Python for a QWidget pointer 2018-06-14 17:56:18 +01:00
baldurk 4b11dce193 Fix linux compilation 2018-06-13 20:54:30 +01:00
baldurk b36b1fa453 Change remote server version to be == RenderDoc version
* Any time the replay types serialisation change, the remote server becomes
  incompatible. We're not going to add backwards compatibility to that system,
  so we need to break it every time.
* Really the version should be bumped any time renderdoc_serialise.inl changes,
  but we don't have an auto-incrementing revision to use.
2018-06-13 17:40:02 +01:00
baldurk ae5323bccc Remove mention of single-queue limitation from docs 2018-06-13 17:18:00 +01:00
baldurk 0ee6406a34 Don't cull while rendering meshes on GL 2018-06-13 16:58:54 +01:00
baldurk d4b4355b89 Don't create aliasing fake physical devices 2018-06-13 16:16:07 +01:00
baldurk add4b44283 Fix some cases missing multiqueue handling 2018-06-13 16:15:52 +01:00
baldurk 47f3f64fc7 Rename Samples Written to Samples Passed
* This measure the number of samples that pass the depth/stencil tests -
 In the case of early tests, this means it doesn't account for shader discard before writing.
2018-06-13 13:22:11 +01:00