Commit Graph

5819 Commits

Author SHA1 Message Date
baldurk ecd8dd0ade Don't report replaced IDs in pipeline state
* If we return back (accurate) replaced IDs in current pipeline state, the UI
  won't recognise them since the list of resources is cached and fixed at load
  time.
* The replaced ID is still present in the shader reflection info as we return
  the replaced shader's reflection and not the original's.
* We also change how we replace a programshader (glCreateShaderProgramv) on GL.
  Instead of creating a program and a shader - resulting in two objects
  replacing one - we instead replace the shader that got built with a program.
  We can do this safely since we know the shader won't be used as an actual real
  shader (since it was a program in the original capture too).
2020-04-03 15:19:28 +01:00
baldurk dc3ebab80a Ensure replacement IDs are used in pipeline initial states. Closes #1810
* If we use the program name directly it won't be replaced if we edit a shader.
2020-04-03 12:36:06 +01:00
baldurk 33d7971364 Mark integer divide by zero as "generated NaN of Inf" in shader debug 2020-04-02 18:15:44 +01:00
baldurk c5242e574a Fetch inputs and derivatives 2020-04-02 18:15:44 +01:00
baldurk 9716b407d3 Add helper for generating GLSL450 extinst operations 2020-04-02 18:15:44 +01:00
baldurk 85dedabcf8 Add helpers for building SPIR-V ops incrementally 2020-04-02 18:15:44 +01:00
baldurk ecc0a53dcb Declare inputs in PSInput struct 2020-04-02 18:15:44 +01:00
baldurk feafbde8bc Add GL hack to check for implicit thread switching
* This is a very big blunt hammer for fixing the problem of multithreaded
  submission from GL. Every GL call checks to see if the context changed (which
  would only happen from a thread switch to a different context) and if detected
  it inserts a manual MakeCurrent call equivalent.
* It's slow to capture (when this happens - checking is not particularly slow)
  and slow to replay, but it's functional which is an improvement.
2020-04-02 18:15:44 +01:00
Lionel Landwerlin d88026a697 Fix KHR storage counter issue for time units
Renderdoc seems to somewhat require time units to be in float to be
able to present prettyfied results (ms/us/ns).

We were assuming that but a couple of errors slipped in :

   * we were asserting that KHR time units are floats

   * we didn't describe the renderdoc units as double (even though we
     forced the conversion later on)
2020-04-02 18:15:28 +01:00
baldurk 528a0c5f5e Guard against integer division by zero
* The SPIR-V spec doesn't state what will happen, only that it's undefined. For
  the sake of something sensible (and because it has a good chance of matching
  at least some hardware) we use D3D's behaviour and set the value to 0xFFFFFFFF
2020-04-01 17:38:44 +01:00
baldurk 53ca92965d Add missing resize when constructing matrix composite 2020-04-01 17:37:16 +01:00
baldurk 2cc9dd81d9 Implement initial state creation for D3D12 2020-04-01 13:24:15 +01:00
baldurk ced6ca2bd4 Ensure that Wait/Signal replays happen on correct queue. Closes #1806 2020-04-01 12:10:22 +01:00
baldurk ee12d68a84 Shared handles should now be supported 2020-04-01 12:09:17 +01:00
baldurk 9014daf76c Fix remapping readback from non-regular formats on GLES 2020-04-01 12:03:13 +01:00
baldurk 3fa87882a7 Fix compilation on apple 2020-03-31 20:19:45 +01:00
baldurk 1b8ae53e57 Fix compilation on linux 2020-03-31 19:47:35 +01:00
baldurk ad4f736b12 Use edited shader and fetch produced output hit data 2020-03-31 18:45:37 +01:00
baldurk 1d0f87cca0 Check for desired pixel and that slot is in bounds 2020-03-31 18:45:37 +01:00
baldurk 1931bd6311 Declare output struct, allocate slot, fill in fixed parameters 2020-03-31 18:45:37 +01:00
baldurk 11a4a8f3d1 Use StorageBuffer storage class when editing 1.3+ SPIR-V modules 2020-03-31 18:45:37 +01:00
baldurk 24ff94ea3c Move SPIR-V editing into separate function 2020-03-31 18:45:37 +01:00
baldurk a64611f7fc Declare or fetch builtin inputs as needed 2020-03-31 18:45:37 +01:00
baldurk 16c01a6db2 Remove OpName for removed types in postvs SPIR-V patching 2020-03-31 18:45:37 +01:00
baldurk c1f91bcd51 Add skeleton of generating PS-input gathering shader in SPIR-V 2020-03-31 18:45:36 +01:00
baldurk 9516e8df09 Don't disassemble void function calls with return value in SPIR-V 2020-03-31 18:45:36 +01:00
baldurk 414d8df8f5 Fix debugging function calls without return values 2020-03-31 18:45:36 +01:00
baldurk fbe2d1fbee Change ReadAll/WriteAll to take rdcstr instead of char* filename 2020-03-31 18:45:36 +01:00
Aliya Pazylbekova bfeb66d4ce Pixel history changes
- Add config to enable pixel history
- Fix several validation errors
- Fix primitive ID reporting when depth test is OFF
- Patch primitive ID and fixed color shader to output to the correct
framebuffer location when there are multiple color attachments
2020-03-31 18:44:55 +01:00
baldurk 52310f174f Fix clang-format issue missed in PR 2020-03-30 22:38:30 +01:00
baldurk cfe5f8e975 Clamp out-of-bounds descriptor access when getting bindless feedback 2020-03-30 21:47:39 +01:00
baldurk 11801a0e32 Don't crash in D3D12 overlays if no viewport is set 2020-03-30 21:47:39 +01:00
baldurk 606ab1ad32 Add in forced flush after texture prepare on GL. Closes #1799
* On some GPUs (ARM Mali in particular it seems) when postponed resources are
  prepared then immediately serialised the readback doesn't get the correct
  data.
2020-03-30 21:47:38 +01:00
baldurk 3bdccf37e6 Fix crash with eglGetDisplay(EGL_DEFAULT_DISPLAY) on linux
* We'll try to get a default display when xlib is available, otherwise there's
  nothing we can do and keyboard input will not be available.
2020-03-30 21:47:38 +01:00
baldurk 81c46c9b1e When creating extremely large query pools, fill with data in batches 2020-03-30 21:47:38 +01:00
baldurk 4d2aa3321b Manually apply framebuffer clears when selecting vkCmdBeginRenderPass 2020-03-30 21:47:38 +01:00
baldurk ddea71cd94 Hide any debug messages found while fetching render state. Closes #1802 2020-03-30 21:47:24 +01:00
Calvin Hsu a59f922ef6 Disable tiled resources for d3d12 check feature
Renderdoc doesn't support TiledResource, as WrappedID3D12Device::CreateReservedResource returns E_NOINTERFACE. This commit reflects the lack of support in WrappedID3D12Device::CheckFeatureSupport.

This allows the application to behave as if the gpu doesn't support
tiled resources.
2020-03-30 21:47:00 +01:00
baldurk ab6bbfd5fd Don't have more than one query active at once 2020-03-20 19:39:43 +00:00
baldurk 9ea49d6b6e When emulating glTexImage on GLES, manually blit GL_RGB format textures
* Some devices don't support attaching GL_RGB textures to framebuffers.
2020-03-20 16:16:52 +00:00
baldurk 7ff8a95205 Don't end stream-out queries twice 2020-03-20 16:16:52 +00:00
baldurk 0e44c51450 Add stub of pixel shader debugging, without inputs 2020-03-20 16:16:52 +00:00
baldurk 48a24a31e4 Implement location assignment for struct members on I/O variables 2020-03-20 16:16:52 +00:00
baldurk 6c0aa42ff1 Propagate thread initial state to whole workgroup properly 2020-03-20 16:16:51 +00:00
baldurk 4a2d5ddbc6 Fix wrong stage specified in DebugThread 2020-03-20 16:16:51 +00:00
baldurk 839c510a75 Fix overflow when clamping length of buffer data fetch 2020-03-20 16:16:51 +00:00
Aliya Pazylbekova 8d2ad78f05 Vk Pixel History: refactoring, per fragment depth
- Refactor to use common funcs
- Add per fragment depth data
- Rename pixelhistory.frag to pixelhistory_primid.frag
- Fix how some per fragment pipelines are created

For per fragment data we create 3 pipelines
1) Post modification pipeline
changes the stencil state and scissors around the target pixel
2) Shader output pipeline
in addition to above, disables rasterization discard, depth bounds test,
culling and turns off blending
3) Primitive ID pipe
in addition to above, disables depth test and depth write, and changes
the fragment shader to only output primitive ID
2020-03-20 16:16:12 +00:00
Aliya Pazylbekova 83623af8d8 Vk Pixel History: per fragment data
- For now only per fragment primitive ID, and colour values, not depth
information.
2020-03-20 16:16:12 +00:00
baldurk 187bd57501 Use 64-bit integer for chunk ID
* Using a 32-bit integer, signed, gives only 2 billion chunks before it wraps.
  With Vulkan/D3D12 creating new chunks even while in the background for
  recording commands this is feasible to hit.
2020-03-19 17:16:20 +00:00
baldurk b393effe4e Switch indirect count draw handling to not reserve max draws
* Instead of reserving maxDrawCount number of draws then deleting the ones we
  don't have, reserve only one and then duplicate it to patch up as needed. This
  makes things much better in the case where maxDrawCount is significantly
  higher than the actual draw count (when maxDrawCount is close to the real draw
  count, this makes little difference).
2020-03-19 17:16:20 +00:00