11703 Commits

Author SHA1 Message Date
baldurk c5480aa622 Add some simple protection against binding bad GL texture handles v1.11 2020-11-27 15:57:25 +00:00
baldurk 949cff30a2 Add some Qt python interfaces not included in docs 2020-11-27 14:30:01 +00:00
baldurk 6c26562201 Remove duplicate documentation entry for GlobalEnvironment 2020-11-27 14:19:33 +00:00
baldurk c27c714677 Fix compilation on stable builds 2020-11-27 11:08:06 +00:00
baldurk 16b2ccc670 Fix preprocessing empty filenames in #line statements 2020-11-27 09:50:35 +00:00
baldurk b8f7029d59 Refactor chunk-allocator to two level pool and allocator
* This fixes a bug with granular command buffer resetting. On vulkan we assume
  each command buffer owns the entirety of the pages it uses, so they can be
  reset all together. However there's nothing to stop an application from
  allocating from the same pool on the same thread interleaved to two command
  buffers. It's unexpected because of the threading rules but perfectly legal.
* In this case we need to ensure that the command buffers have disjoint sets of
  pages because they may not be reset together and one may be in used while
  another is reset and even re-recorded over. This can't be achieved with a
  single allocator, so instead we split the pool (that owns/provides/frees
  pages) from the allocator (that grabs whole pages and suballocates for
  chunks).
2020-11-26 11:39:28 +00:00
baldurk 593a903cf1 Enable sRGB framebuffer immediately on GL output window 2020-11-26 10:26:37 +00:00
baldurk 3f394aa5df Handle multiple pages in a row being too full
* When resetting pagesets in a granular fashion from the chunk allocator, it's
  possible to almost (or completely) exhaust a page but not have it be bumped
  out of the free list, then one more new full free pages is pushed. When that
  free page is exhausted we'll retire it then assume the next one is usable -
  but it is still not valid. We need to loop until we find a page with enough
  space.
2020-11-25 16:56:16 +00:00
baldurk ecafa4f129 Tweak lock order to avoid a deadlock during capture
* During capture we hold the transition lock for writing, so we need to try to
  lock that first (if we're going to) before locking the queue's lock. Otherwise
  another thread could come in and get the queue's lock while we're holding the
  transition lock, then we deadlock against each other.
2020-11-25 14:06:35 +00:00
baldurk 883e023259 Avoid use of EXT_direct_state_access in tests
* Mesa doesn't implement the EXT version, only the KHR version
2020-11-24 16:47:35 +00:00
baldurk abf7e3bd90 Only declare half type if shaderFloat16 is supported
* Without this, the 16-bit storage only refers to ints (if that feature is
  available).
2020-11-24 16:44:08 +00:00
baldurk d3013af91c Fix annotations on output storage buffer for math operations 2020-11-24 16:43:46 +00:00
baldurk a34d7b1965 Don't bind Qt signals multiple times for custom paint widgets 2020-11-24 16:29:36 +00:00
baldurk 0e94699156 Don't add fragment execution mode for compute-shader math pipeline 2020-11-24 16:29:18 +00:00
baldurk c9f1c9ea2e Update to AGS 6.0.1 2020-11-24 16:12:20 +00:00
baldurk 7a6b044f10 Use comparison state not shadow sampler type for pipeline state 2020-11-23 15:19:24 +00:00
baldurk 8d4b45cda3 Fix paramref documentation reference 2020-11-20 18:15:00 +00:00
baldurk efac5ad70a Disable runtime and security checks in development builds
* This provides a decent speed boost and these have never caught any issues
  before. Asan/gflags/valgrind etc do a better job of this when needed.
2020-11-20 17:02:33 +00:00
baldurk 883000009d Ensure ResourceId declares all operators
* This improves things in the MSVS debugger which otherwise sometimes complains
  of no suitable copy constructor for ResourceId
2020-11-20 17:02:33 +00:00
baldurk 58e16414e0 Add a number of control functions to the Qt python interface 2020-11-20 17:02:33 +00:00
baldurk f0d00b5ad4 Don't allow command pool/allocator reset until capture is finished
* Even after transitioning to background capturing we can't allow reset or else
  we could record over chunks that we have yet to write to disk.
2020-11-20 13:10:38 +00:00
baldurk bd9d88b328 Add missing includes 2020-11-19 17:34:11 +00:00
baldurk 23e66418d9 Compile fixes on linux 2020-11-19 16:51:20 +00:00
baldurk ee0267d741 Fix missing sRGB conversion of clear background color 2020-11-19 14:47:11 +00:00
baldurk 3f5a911483 Refactor CustomPaintWidget to handle widget recreation internally
* This allows us to expose to to python as a easy-to-use "replay output ready"
  widget.
2020-11-19 14:47:11 +00:00
baldurk 1dc1b4d167 Add some profile markers in common hotspots 2020-11-19 14:47:11 +00:00
baldurk d0bf0f6eab Add Superluminal PerformanceAPI annotation support 2020-11-19 14:47:10 +00:00
baldurk ef0b3fe8a1 Add virtual destructor 2020-11-18 19:14:35 +00:00
baldurk 916c431dfa Compile fixes 2020-11-18 19:05:03 +00:00
baldurk 0aefcced95 Add a small interface into Qt widgets to our own python wrapping
* This by no means replaces PySide2, but it allows python extensions to write
  simple UIs without needing to rely on PySide2, which might not be available
  (generally all windows builds have it as well as recent binary linux builds,
  but local windows builds may not and most linux builds probably won't).
2020-11-18 18:21:20 +00:00
baldurk ab2f4e4046 Fix exception handling in wrapped python callbacks 2020-11-18 15:41:20 +00:00
baldurk 91d8c30cd3 Fix python object conversion for NULL QWidgets 2020-11-18 13:11:58 +00:00
baldurk a457389937 Thumbnails with automatic scale shouldn't always be linear sampled on GL 2020-11-16 18:33:35 +00:00
baldurk e0147928f1 For 3D texture views the depth is the original texture's depth
* The number of layers is only the depth for array textures.
2020-11-16 18:24:31 +00:00
baldurk 0d4194afc5 Cache id so we don't reference iterator after deletion 2020-11-16 12:20:15 +00:00
baldurk 705eb10c77 Set correct type when interpreting R10G10B10A2_UNORM vertex inputs 2020-11-16 10:35:56 +00:00
baldurk 9fa89e39e3 Disable mesa device select layer. Closes #2093 2020-11-13 14:23:19 +00:00
baldurk 6320923966 When VB stride is 0 read enough data for any single attribute 2020-11-12 17:04:43 +00:00
baldurk 1375a17682 Add missing plugin file to installer manifest 2020-11-12 10:58:43 +00:00
baldurk dc957b4c5c Fix typo and clarify AlphaMapping use. Closes #2090 2020-11-12 10:58:32 +00:00
baldurk 38886ab541 Fix memory leak if only baked commands are freed on vulkan 2020-11-10 14:36:09 +00:00
baldurk 804fddcdf7 Allow python extensions to be loaded from app folder as well as user
* This will let us distribute extensions with the renderdoc builds.
2020-11-10 13:57:27 +00:00
baldurk bd5b79bd3a Tweak Repeat_Load to do two reload tests before grabbing baseline 2020-11-10 13:18:31 +00:00
baldurk c0876f2573 Fix multisampled array framebuffer attachments in initial states 2020-11-10 13:02:28 +00:00
baldurk b402dfeeb5 Don't set program I/O bindings on GL unless it has a vertex/pixel shader
* For separable programs we'll query out I/O bindings for e.g. only the geometry
  pipeline, but we shouldn't try to set those outputs with
  glBindFragDataLocation. Normally we'd expect these bindings to be queried as
  -1 at capture time, but just be sure.
2020-11-10 13:02:08 +00:00
baldurk 5f6f00d175 Fix vulkan vertex shader debugging populating inputs 2020-11-10 12:40:52 +00:00
baldurk daaff29044 Fix crashes with overlays on rasterizer discard enabled pipelines
* None of the overlays do anything when rasterizer discard is enabled, so just
  skip most work.
2020-11-10 11:31:53 +00:00
baldurk 561a15e11a Add some missing GL enums 2020-11-10 11:26:24 +00:00
baldurk 8ca89b9c2d Further compile fixes for half library 2020-11-10 10:06:12 +00:00
baldurk 944070fdd7 Fix warnings with clang build of half library
* Comma operator problems when doing math functions that return two parameters
  (e.g quotient).
* Passing bool tag type through varargs - the varargs aren't actually used and
  there's an overload for true_type, so we can instead accept false_type.
* gcc seems to declare numeric_limits as a struct, so friend'ing it as a class
  throws a warning. Since we only care about C++11 we can omit the tag from the
  friend declaration.
2020-11-09 17:59:53 +00:00