Commit Graph

8711 Commits

Author SHA1 Message Date
baldurk 793ea24f9d Clear dlerror for code that's aggressive with error checks. Close #1279 2019-02-25 21:04:09 +00:00
baldurk 8ae9ccdd7f Check descriptor writes for validity before updating in PostVS fetch
* This can happen for push descriptors that are declared but never used.
2019-02-25 15:31:43 +00:00
baldurk 2dc37ac232 Handle creating backbuffer views with non-NULL non-typed descriptor
* We already handle the case where e.g. D3D12_RENDER_TARGET_VIEW_DESC is NULL
  and we need to substitute in a typed descriptor for backbuffers. We didn't
  handle the case where
2019-02-25 15:31:43 +00:00
tabi.katalin 2507532623 Fix GLES shader compile errors
Detected two shader compile errors while replaying GLES apps:
1. „#extension directive must occur before any non-preprocessor token” -  Fix the order of precisions and extensions in the shader code.
2. „extension 'GL_OES_texture_cube_map_array' is not supported”  - Do not add extensions if they are actually not supported. TEXTURE_CUBE_MAP_ARRAY was added to GLES 3.2 so   GL_OES_texture_cube_map_array and GL_EXT_texture_cube_map_array are no longer used.
2019-02-25 11:30:25 +00:00
baldurk e9e1d91b34 linux compile fix 2019-02-22 22:40:33 +00:00
baldurk ec58308207 With GL we can have binding aliasing. Keep searching for a used binding
* If we have multiple bindings aliasing the same slot, we want to keep going if
  the first one we find is unused to see if the slot is aliased with one that
  *is* used. We'll still use the last unused one if we don't find any used at
  all (and with aliasing any one we pick is as valid as another).
2019-02-22 14:10:25 +00:00
baldurk a1d1ccea62 Update glslang to a51d3d9f223361165127ded3cd2e59d81e22d91f 2019-02-22 13:56:37 +00:00
baldurk 73d51637c4 Handle querying for ID3D11Texture2D1 and ID3D12Resource1. Closes #1276 2019-02-22 13:49:58 +00:00
baldurk 95570e5a28 Don't allocate empty memory if no index buffer is bound 2019-02-22 13:49:58 +00:00
Tobias Kunicke f42a774966 fixed file open dialog 2019-02-22 08:31:09 +00:00
Benson Joeris 47b351c566 Refactor GetByteSize and GetPlaneByteSize using GetBlockShape
This eliminates a substantial amount duplicate code between `GetByteSize` and
`GetBlockShape`.

Also added explicit tests of `GetPlateByteSize` independent of `GetByteSize`.
2019-02-21 21:58:26 +00:00
baldurk 0f1e1faf48 Erase elements that should not be serialised to avoid crashes 2019-02-20 13:53:41 +00:00
baldurk 98b8ff1dd7 Don't use GPUCounter directly in public interface for python
* Python throws an error when enums don't have a pre-existing value, which can
  happen for GPUCounter due to hardware specific counters. Instead just declare
  as int and allow casting back and forth for values that are pre-existing.
2019-02-20 13:53:20 +00:00
baldurk e01bc4c734 Implement untested support for D3D12.3/D3D12.4 interfaces. Closes #1268
* Most of the interfaces are not supported - protected sessions, raytracing,
  etc.
* We also split apart the 1/2/3/4 wrapped implementations to avoid uber files.
2019-02-19 17:54:53 +00:00
baldurk 24abd885ab Fix UUID check for ID3D12Fence1 2019-02-19 17:54:53 +00:00
baldurk b14e3f2ef9 Fix valgrind issues found running unit tests
* GLContextTLSData default constructor should be initialised.
* Add some missing deletes in shader reflection
* Call freeaddrinfo after getaddrinfo
* Don't leak if we're reserving 0 bytes in rdcstr over the top of an already
  empty rdcstr
2019-02-19 17:54:53 +00:00
Benson Joeris cb26815570 Fix bug in Intervals<T>::update()
When the interval being updated went all the way to the end of the last
interval (UINT64_MAX), `update` would call `mergeLeft` on the `end()` interval.
This would cause `mergeLeft` to dereference an invalid iterator.

Also added a quick return for updating empty intervals, and unit tests to verify
correct handling of empty intervals, which were run both with and without this
optimization.

Also removed some unnecessary asserts that likely called many times. These
asserts could only fail if there was a bug in the `Intervals<T>` implementation,
which should be caught by the unit tests.
2019-02-19 17:54:41 +00:00
Benson Joeris a7b21ae2d2 More precise memory tracking for vkCmdCopyImageToBuffer
This change tracks the exact memory regions of the buffer accessed in
`vkCmdCopyBufferToImage` and `vkCmdCopyImageToBuffer`. In the case of
`vkCmdCopyImageToBuffer`, using the exact memory regions allows the buffer write
to be treated as a `CompleteWrite` (instead of `PartialWrite`).
2019-02-19 15:56:57 +00:00
Benson Joeris d6b706b132 Add GetTexelShape to compute image format texel info
This returns the width and height of the texel blocks, and the number of bytes
per texel block.
2019-02-19 15:56:57 +00:00
baldurk d1e0d7f88f Fix segfault if allocatedPrograms vector is deleted before shutdown 2019-02-18 20:43:00 +00:00
baldurk 2ae5be5328 Fix duplicated label name 2019-02-18 20:42:59 +00:00
Benson Joeris 465596e563 Serialise ref types for Vulkan device memory ranges 2019-02-18 17:33:59 +00:00
Benson Joeris 5e49b076b5 Add serialization for FrameRefType 2019-02-18 17:33:59 +00:00
baldurk c289290ffa Fix unwanted trailing space in extension name 2019-02-18 17:23:21 +00:00
baldurk 7e363261a4 Add explicit metal check for MS<->Array copies
* Two parts of this feature don't seem to work - MSAA Arrays and writeable MSAA
  textures. It's easier to disable it completely when running on Metal.
2019-02-18 17:23:21 +00:00
baldurk 80644680ab Handle drivers that support 4x MSAA but not 2x 2019-02-18 17:23:20 +00:00
baldurk 73c3159615 Find include-bin via $<TARGET_FILE> when not cross-compiling
* On macOS it's not output directly into the runtime output directory, but under
  a subdir for each build type (e.g. Debug, Release).
2019-02-18 17:23:20 +00:00
baldurk 3aa64e2e8e Completely emulate ARB_program_interface_query using glslang
* We already did this partially, enough for capturing, but now we also do it on
  replay.
2019-02-18 17:23:20 +00:00
baldurk 2ea6174c83 Update glslang to latest tip-of-tree
* This is glslang from commit 9f538c7207b87bd4219a8a9cc95e3c43798793b7
2019-02-18 17:23:20 +00:00
baldurk 5a1c5e2db5 Fix extension package names being incorrect 2019-02-18 17:23:19 +00:00
Benson Joeris 5bc993f01f Mark simple copies into VkDeviceMemory as CompleteWrite 2019-02-18 17:23:09 +00:00
baldurk 1713dcad1b Fix typo in python version macro use in renderdoccmd 2019-02-15 18:17:34 +00:00
baldurk 5484bcbf1a Don't error if a non-existant file is passed via TestFailureException 2019-02-15 18:17:20 +00:00
baldurk 7ef8ed0a7a Drop the requirement for PIL in the tests, use pypng drop-in replacement
* This means we no longer need to import PIL from somewhere else if we run via
  renderdoccmd test functional
2019-02-15 18:17:06 +00:00
baldurk 24882eb486 When event changes in BufferViewer, preserve row offset don't reset 2019-02-15 15:10:31 +00:00
baldurk c72e79960e Allow launching demos program with no arguments to see test selection 2019-02-15 14:55:30 +00:00
baldurk 69dc9f8031 Print prefixed output in a single call to rdclogprint_int
* On android each call to rdclogprint_int goes onto its own line in the logcat
  output, so we need to combine the prefix externally.
2019-02-15 11:55:51 +00:00
baldurk 9ee4795948 Don't underflow when reading padding if serialiser is in an error state 2019-02-15 11:28:27 +00:00
baldurk 982ef03fd1 Fix android build 2019-02-14 22:34:16 +00:00
baldurk 35c1aab64d Update CI to run the correct unit test command 2019-02-14 22:01:52 +00:00
baldurk 8603420d86 Remove vkCopyDescriptorSet path from vulkan postvs fetch entirely
* The workaround had to be removed on Android due to buggy drivers, but it's
  unnecessary in general.
2019-02-14 21:25:25 +00:00
baldurk d579bf209c With multi-line logs, reprint the prefix each time
* This means a bit more regularity to the log prints and allows them to be
  parsed on android.
2019-02-14 18:09:15 +00:00
baldurk 79a626a8e1 Put android logcat processing onto separate thread
* This allows it to tick faster when e.g. loading a capture that takes a while
  without any pings. It also allows it to continue going for a short while after
  the remote server shuts down to capture any crashdump messages.
2019-02-14 18:01:09 +00:00
baldurk fb9aac95d1 Add function to detach from a thread 2019-02-14 16:54:40 +00:00
baldurk 34a97482dd Add helper shortcut to 'renderdoccmd test' to run functional tests
* This invokes run_tests.py with any arguments but specifies the renderdoc
  module and python module paths automatically. Only works if built within the
  project repo itself as otherwise it won't locate the test script
2019-02-14 15:45:22 +00:00
baldurk 634040d4b5 Change working directory to script location for running functional tests 2019-02-14 15:15:45 +00:00
baldurk ce991e421a Drop psutil requirement in functional tests, fetch memory usage directly 2019-02-14 15:08:28 +00:00
baldurk 0753793f24 Allow passing --help or -t to test commands in renderdoccmd
* Previously it would be swallowed and processed as the argument to the test
  command itself. We need to do a little manual parsing and stop cmdline from
  doing too much work.
2019-02-14 13:17:19 +00:00
baldurk 6b571e9a06 Don't return from parse() if argc is 0, need to check required arguments 2019-02-14 13:09:43 +00:00
baldurk 0e926ee258 Fix broken timeout calculation causing intermittent CI failures
* It turns out that min(0, x) is 0, and not a great way to prevent underflow!
2019-02-14 12:56:55 +00:00