-
865d39ec
by baldurk
at 2020-07-22T18:48:41+01:00
Bump version to 1.10
-
a10f67f2
by baldurk
at 2020-07-22T20:04:58+01:00
Skip OpLine/OpNoLine that appears before function variable declarations
-
2f6ed260
by Kevin McCullough
at 2020-07-23T18:26:21+01:00
Replacing non-ascii characters with -
-
c1617974
by baldurk
at 2020-07-24T16:33:34+01:00
Don't look up viewport if none is bound
-
e147a5a6
by baldurk
at 2020-07-24T16:33:34+01:00
Test OpLine/OpNoLine being intermingled with function header
-
287bb81f
by baldurk
at 2020-07-24T16:33:34+01:00
Add a note about the python module version restriction
-
691ee0c3
by baldurk
at 2020-07-27T16:17:12+01:00
Don't overwrite GL state when creating text-rendering data. Closes #1994
-
fda371cc
by baldurk
at 2020-07-27T16:17:12+01:00
Avoid glTextureBufferRangeEXT if range isn't valid
* This likely indicates that the non-range variant was used originally.
-
e6a2b94b
by baldurk
at 2020-07-27T16:17:13+01:00
Disallow closing progress dialogs early
* Normally the close button is hidden but some platforms don't allow this.
-
1c6c6717
by baldurk
at 2020-07-27T16:17:13+01:00
Change scissor/viewport count when it's not dynamic state
-
624da2fb
by baldurk
at 2020-07-27T16:17:13+01:00
Add test that we don't crash on draws with new viewports
-
d0205430
by baldurk
at 2020-07-28T15:30:45+01:00
Set -fno-strict-aliasing to prevent gcc from breaking tons of code
* Technically the code is incorrect, because the C++ spec is terrible and makes
completely normal things illegal. GCC decides that a couple of % more perf is
worth breaking lots of code, so instead we disable this class of
"optimisation".
-
23fc093a
by baldurk
at 2020-07-29T10:43:57+01:00
Consistently use original command buffer IDs in maps
* If we use the live ID then re-recorded command buffers can cause maps to
slowly grow in size.
-
5af3a4e2
by baldurk
at 2020-07-29T10:59:18+01:00
Add a debug option to embed the log file in captures
-
83478602
by baldurk
at 2020-07-29T14:23:34+01:00
Don't register/unregister frame capturers when swapchains resize
-
c8c281b5
by baldurk
at 2020-07-29T14:52:05+01:00
Test swizzles on byte address buffer loads
-
d03acd3b
by baldurk
at 2020-07-29T15:17:45+01:00
Test reading instanced data via client memory pointers in GL
-
9ce60a0b
by baldurk
at 2020-07-29T15:39:04+01:00
Test that OpenExistingHeapFromAddress can be captured and replayed
-
50cb5a1a
by baldurk
at 2020-07-30T11:23:02+01:00
Lock resource from mapping when diffing in queue execute. Closes #1998
-
bece22e7
by baldurk
at 2020-07-30T15:34:57+01:00
Add some missing filters categorisation for files
-
ee6080eb
by baldurk
at 2020-07-30T15:38:19+01:00
Fix logs for starting frame captures
* We don't have the frame number here anymore so don't print it
-
455eddf3
by baldurk
at 2020-07-30T16:37:01+01:00
Refactor UpdateImageStates to optimise for the case of few updates
-
ed3163b6
by baldurk
at 2020-07-31T14:42:45+01:00
Don't perform library hook on windows when loading as datafile
-
351687eb
by baldurk
at 2020-07-31T16:24:59+01:00
Test that D3D11 shader debugging doesn't internally pollute state
-
39431bb8
by baldurk
at 2020-07-31T17:20:25+01:00
Don't flush mapped memory in driver for detected coherent memory writes
-
caf1e03d
by baldurk
at 2020-08-03T18:30:03+01:00
Strip debug extensions on replay
-
0b061f45
by baldurk
at 2020-08-03T18:30:20+01:00
Stop tracking dirty state at fine-grained detail on vulkan
* Almost all dirty-able resources (memory and images) become dirty almost
immediately, so spending time tracking dirty state is wasted. Instead we treat
these resources as dirty at creation and rely on the postponing logic to avoid
preparing initial states for newly created resources that are not used in the
frame.
* This may cause more 'last-minute' postponed prepares for newly created
resources, which would previously.
-
035073fa
by baldurk
at 2020-08-03T18:30:20+01:00
When updating descriptor bind refs, cache resource references
* This means we don't have to iterate the whole bindrefs array every time we
want to propagate references in the background, but we can submit them in
batch.
-
2d474662
by baldurk
at 2020-08-03T18:30:20+01:00
Combine last write time and last partial use maps into array
* We only care about tracking two things:
1. Resources that have been written very recently. These should not be
postponed as there's a high chance they'll be written mid-frame and so we'd
need their initial contents.
2. Resources that have their last non-complete-write reference was a while ago
However in the second case we can acceptably ignore any resources that haven't
been written recently either, since if the resource hasn't been written and
also hasn't been complete-written then it hasn't been used at all.
* So when updating the non-complete-write time we only do this if the resource
has had a write reference, and intermittently we remove any resources that
haven't had a write at all.
* Postponed resources will be exactly the same set, because we treat a resource
as postponable if we have no write time for it at all so it's fine to remove
old resources from the list. Fewer resources will be skipped, as we now treat
resources that have no known age as non-skippable. However in the majority of
these cases we expect either for the resource to not be used at all (thus the
postpone will never be forced to prepare and we won't serialise anything), or
else if it is used the chances are high it will be used read-only so the
postpone will still be enough.
-
27b541c6
by baldurk
at 2020-08-04T11:22:15+01:00
Always optimise some 3rdparty code like lz4, to speed up debug builds
* We don't need to debug this code and it slows down captures a fair bit if it's
not optimised
-
7b1995a7
by baldurk
at 2020-08-04T13:59:45+01:00
Properly handle offsets on memory maps in vulkan
-
211d8532
by baldurk
at 2020-08-04T14:48:02+01:00
Use GPU readbacks for mapped memory in PCI-E window
* On discrete GPUs that expose PCI-E window memory (device local but still host
visible) this memory is extremely slow to read from on the CPU. It's
significantly faster to issue a command buffer to get the GPU to copy into CPU
memory and wait on that command buffer to finish, then read from the copy.
* We do this for detected coherent writes in queue submit, issuing the copy on
the queue being submitted to. We do *not* do this for memory unmaps or
explicit application flushes. This does mean those will remain slow, however
with no queue to use the synchronisation challenges become more significant
and most applications leave memory persistently mapped.
-
31b7c35b
by baldurk
at 2020-08-04T14:48:51+01:00
Fix logfiles not being deleted if captured application is the last user
* Previously only the UI itself would delete the log if it was the last thing to
close.
-
9f2de545
by baldurk
at 2020-08-04T17:52:10+01:00
Better reserve of written records size
-
9547b049
by baldurk
at 2020-08-05T11:41:31+01:00
Update version number on in-application API documentation
-
0ee1209a
by baldurk
at 2020-08-05T11:41:32+01:00
Mention that Vulkan supports shader debugging in documentation
-
ab6fc1c4
by baldurk
at 2020-08-05T12:15:36+01:00
Don't ever wait for idle when rendering overlay in vulkan
* Instead of waiting for idle, we allocate a command buffer per swapchain image
to render the text overlay and use semaphores and fences to properly
synchronise with other GPU work ongoing.
-
685daffd
by baldurk
at 2020-08-05T13:00:11+01:00
Add missing barrier after filling discard pattern buffer
-
6af18a56
by baldurk
at 2020-08-05T13:22:27+01:00
Patch another form of handle string in vulkan debug messages
-
f29a2df8
by baldurk
at 2020-08-05T14:11:40+01:00
hasData for Create_InitialState is only used on D3D11
-
efd2c034
by baldurk
at 2020-08-07T12:21:05+01:00
Items in initial contents list don't need to be added as written records
* Resources which aren't referenced in the frame don't need initial states
unless we have 'Ref All Resources' enabled. These initial states can be
stripped on replay as they aren't needed.
* We also renamed the WrittenRecords to more explicitly list that this is the
list of resources needing initial contents, whether because they were dirty
(and so had initial contents) or because they were written mid-frame and so
need to be reset.
-
9858f516
by baldurk
at 2020-08-07T12:46:17+01:00
Set default precision specifiers earlier in GLES shader
-
2a138acf
by baldurk
at 2020-08-07T13:39:00+01:00
Don't call glBindFragDataLocation on GLES even if we have a func pointer
* The function is illegal to call regardless of whether we get a non-NULL
function pointer. Core GLES doesn't support glBindFragDataLocation but
fortunately we don't need to call it ourselves unless the user has done some
dynamic binding - which assumes glBindFragDataLocation is available.
-
de7030ea
by baldurk
at 2020-08-07T16:05:06+01:00
Perform descriptor copies immediately. Closes #2009
* When we changed to serialise render target descriptor contents at list record
time we also updated all descriptor writes to happen immediately so we'd get
the latest contents. However we didn't also update copies, so copies before
OMSetRenderTargets weren't properly reflected.
* There's nothing that needs the 'old' copy of descriptors so we can remove any
pending/deferring of updates and do it immediately, which also saves some
tracking.
-
d9fc87ec
by baldurk
at 2020-08-07T16:12:29+01:00
Do our best to determine suffix for unknown file filters. Closes #1993
* We work around a GNOME bug here by ignoring a selected filter if it's the
empty string. For all other unknown filters we try to determine the suffix on
the fly.
-
d1c95642
by baldurk
at 2020-08-10T11:19:57+01:00
Show float casting and normalising of GL vertex attributes. Closes #2013
-
152170dc
by baldurk
at 2020-08-10T14:09:36+01:00
Fix reference data not being updated at right place after map write
-
dd5f4202
by baldurk
at 2020-08-10T15:19:10+01:00
Add barrier and invalidate when reading back memory via GPU
-
c456d16f
by baldurk
at 2020-08-10T15:28:24+01:00
Avoid crash if mapped memory is changed while diffing
-
6bb177ec
by baldurk
at 2020-08-10T16:09:32+01:00
Lazily create readback buffer
* This means we don't allocate a large buffer even though we won't actually use
it. Most important for memory constrained platforms like android.
-
18689e3b
by baldurk
at 2020-08-10T16:12:40+01:00
Fix handling of deprecated debug marker object type enums
-
7f9b5d11
by baldurk
at 2020-08-12T15:15:32+01:00
Detect mapped memory writes to tiled images and skip. Closes #1863
* We track memory bindings to see which regions of a memory object are only used
for tiled images, and discard any writes in case this was accidental detection
of changes by the GPU which we don't want to replay. In the case of aliasing
if there's linear and tiled resources then we still replay the writes.
* Note that we have to take a slower path involving a copy since we can't
serialise straight into memory in this case, so applications should avoid
mapping memory behind
-
50b2964c
by baldurk
at 2020-08-12T15:15:32+01:00
Don't dirty memory on allocation, wait until a buffer is bound
* Otherwise we'll prepare and serialise contents for memory that's only used for
images, which is wasteful at best.
-
b0d3fb12
by baldurk
at 2020-08-12T15:15:33+01:00
Don't perform queue submit until after flushing maps/references
* While active capturing we might do significant work to flush coherent mapped
memory regions and prepare initial contents for postponed resources that are
about to be write-referenced. We need to do that before submitting the actual
work to the queue or else the contents may be corrupted.
-
e2e7c1f8
by baldurk
at 2020-08-12T15:15:33+01:00
Add the ID for the resource underneath image views
* Without this we don't properly cache the references for images, only for
views.
-
d2745998
by baldurk
at 2020-08-12T15:15:33+01:00
Remove IDs from background ref cache as appropriate
* This prevents the cache from growing unbounded.
-
61c6d88b
by baldurk
at 2020-08-12T15:15:33+01:00
Update reftype on rollover from one binding to another
* When we roll over from one binding to another due to descriptor count being
larger than a single binding, we need to update the frame reftype since it
might go from storage to sampled or vice-versa and so change from read-only to
read-write.
-
9df6103b
by baldurk
at 2020-08-12T15:15:33+01:00
Remove debug log left in
-
aac929af
by baldurk
at 2020-08-13T10:22:56+01:00
Go back to reporting normalised vertex inputs on GL as SNorm/UNorm
* This is still accurate, what we're missing is "read data as int, then cast to
float" which is represented by setting 'floatCast' to true. A normalized cast
or interpret is accurately represented by saying the input is snorm/unorm
typed.
-
bc3f23e8
by baldurk
at 2020-08-13T11:36:07+01:00
Add missing bounds check for 32-bit indices
-
407b4740
by baldurk
at 2020-08-13T12:27:00+01:00
Re-evaluate composite spec constants when data is available. Refs #1908
-
e11c3523
by baldurk
at 2020-08-14T14:58:08+01:00
Fix subprocess timeout not properly kicking in
-
73248c84
by baldurk
at 2020-08-14T14:58:12+01:00
Include RenderDoc logfile after test runs
-
bf2cee8b
by baldurk
at 2020-08-14T14:58:15+01:00
Fix D3D12On7 presents not properly adding frame capturer
-
e7657f62
by baldurk
at 2020-08-14T14:58:16+01:00
Use QTextBoundaryFinder to truncate resource names
-
2b990bdf
by baldurk
at 2020-08-14T19:19:16+01:00
Remove RightToLeft property that was accidentally added
-
7f1748e8
by baldurk
at 2020-08-14T19:48:21+01:00
Don't misbehave when freeing or destroying VK_NULL_HANDLE
-
01e05e6d
by baldurk
at 2020-08-17T10:22:23+01:00
Cancel a rename in progress if a different resource is selected
-
bf8390d3
by baldurk
at 2020-08-17T10:26:30+01:00
Fix docker build to work with https apt sources
-
466debe9
by baldurk
at 2020-08-17T12:44:47+01:00
Clean background frame references every 20 submits
* This means the background references array won't build up even for programs
that don't present.
-
7a65dba2
by Thomas Poulet
at 2020-08-18T14:22:30+01:00
Fix dry-run option in CreatePipelineLibrary
This commit addresses an issue where the application is crashing when receiving nullptr in ppPipelineLibrary. As per the specifications, ppPipelineLibrary can optionally accept nullptr and perform a dry run. Since pipeline libraries are not supported, we return the driver unsupported case.
https://docs.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12device1-createpipelinelibrary
-
88c6dc27
by baldurk
at 2020-08-19T14:24:51+01:00
Use plain array instead of set for resource record parents array
-
7cc54fea
by baldurk
at 2020-08-19T14:24:51+01:00
Pass resource record into AddBindRefs when available
* This avoids a redundant call to GetResourceRecord when the caller already has
it directly available.
-
78e2475d
by baldurk
at 2020-08-19T14:24:51+01:00
Use a read/write lock for resource record access in resource manager
-
488a9e3f
by baldurk
at 2020-08-19T14:24:51+01:00
Block allocate storage for current descriptor set bindings
-
d0f59de4
by baldurk
at 2020-08-19T14:24:51+01:00
Re-use descriptors in descriptor pool
* If an application allocates from and resets descriptor pools at very high
frequency the overhead of freeing and reallocating those descriptor sets can
be high. Instead use the descriptor pool as a pool for children and look up
the freelist first for an existing descriptor set before trying to allocate a
new one.
-
6eca4a4c
by baldurk
at 2020-08-19T14:24:51+01:00
Cache call to FormatImageAspects
-
0859aaa1
by baldurk
at 2020-08-19T14:24:51+01:00
Change descriptor set lock to spinlock
* We don't expect contention on this, the only time it will contend is when
actively capturing a frame between updates and submits reading the descriptor
contents, so we penalise that case while making the background case faster -
since a spinlock is 'free' to take when there's no contention.
-
8a350f28
by baldurk
at 2020-08-19T14:24:51+01:00
Batch updates to background ref cache
* If the background cache is empty also (for a descriptor set that has never
been written before) we can duplicate it straight from bindFrameRefs).
-
babbdadc
by baldurk
at 2020-08-19T14:24:51+01:00
Cache a single value inline in ImageSubresourceMap
* Having a single subresource (range) is a common case, so avoid allocating
storage in an array for that, only switch to the array when we have more than
one range to store.
-
d2e0b7ce
by baldurk
at 2020-08-19T15:21:00+01:00
Implement move semantics support for rdcarray/pair
-
73cc1f54
by baldurk
at 2020-08-19T15:21:00+01:00
Add specialised rdcarray which implements key/value lookup
-
15f35931
by baldurk
at 2020-08-19T15:21:00+01:00
Fix wrong string format specifier
-
213aded1
by baldurk
at 2020-08-19T16:35:58+01:00
Fix compilation of single flush validate
-
4afc97e6
by baldurk
at 2020-08-19T17:57:50+01:00
Fix backwards assert
-
ffac439c
by baldurk
at 2020-08-19T18:02:03+01:00
Record which queries are reset in each frame & restore them to validity
* It's possible that a frame capture could copy from a query and then reset it,
without then recording something valid into the query. Then the next replay
the copy would be unavailable and if WAIT_BIT is set that would lead to a
device lost.
* We already fill out queries with dummy valid data on create time, so now we
record any queries that are reset and re-fill them with valid data again.
-
a48ab556
by baldurk
at 2020-08-19T19:18:37+01:00
Fix compile errors
-
83714b82
by baldurk
at 2020-08-20T10:47:16+01:00
Remove note about android support being new
-
077aebc9
by baldurk
at 2020-08-20T10:49:23+01:00
Fix sanitisation of aspect mask in subresource range
-
64f98f28
by baldurk
at 2020-08-20T13:48:17+01:00
Add test of heavy descriptor reallocation and reuse
-
c01dd73b
by baldurk
at 2020-08-20T15:26:02+01:00
Remove some dead code/variables
-
274185f8
by baldurk
at 2020-08-20T15:26:02+01:00
Fix wrong size for memset
-
52632ccc
by baldurk
at 2020-08-20T15:26:02+01:00
Fix incorrect array index used in disassembly
-
b5de095f
by baldurk
at 2020-08-20T15:26:02+01:00
Use explicit enum comparisons to check for empty flags
-
fa24dc88
by baldurk
at 2020-08-20T16:11:05+01:00
Silence some PVS warnings
-
112741a7
by baldurk
at 2020-08-20T16:11:05+01:00
Remove some parameter name shadowing
-
81fbf4bc
by baldurk
at 2020-08-20T16:11:05+01:00
Fix some dodgy memcpy calls
-
0b0beb3a
by baldurk
at 2020-08-20T16:11:05+01:00
Call virtual functions by explicit class in constructor
-
3e100109
by baldurk
at 2020-08-20T17:02:03+01:00
Test destroying/freeing NULL handles, fix validation errors
-
5c0dadae
by baldurk
at 2020-08-20T17:09:51+01:00
Test that RTV descriptor copies in D3D12 are properly recorded mid-frame
-
07ee28c9
by Tim Gfrerer
at 2020-08-21T11:07:11+01:00
Allow Python 3.8 to be detected
Adds python 3.8 to the list of python 3 versions.
Thank you so much for renderdoc!!
-
409f2564
by baldurk
at 2020-08-21T11:49:44+01:00
Fix event ID indexing for multidraw commands on GL. Closes #2019
-
a6871327
by baldurk
at 2020-08-21T11:49:44+01:00
GL renderbuffers do not have mips, return early from function
* Some of the other sub-functions don't handle non-texture targets
-
155d455f
by baldurk
at 2020-08-24T10:04:23+01:00
Fix typo in glClearFramebufferfv variants
-
a32bf777
by baldurk
at 2020-08-24T10:52:30+01:00
Add extra case to assert
-
f013824f
by baldurk
at 2020-08-25T16:16:39+01:00
Cache D3D11 buffers being read-only to speed up bound-for-write checks
-
753806d5
by baldurk
at 2020-08-25T17:24:23+01:00
Add a specialisation for buffer reference add/remove
* This skips some potentially expensive (and redundant) checks if the buffer is
a view.
-
f664d13b
by baldurk
at 2020-08-26T18:46:56+01:00
Clear up queue data when device is destroyed
-
a457aa5a
by baldurk
at 2020-08-26T18:46:56+01:00
Fix handling of CONCURRENT swapchain images
-
62f55a37
by baldurk
at 2020-08-26T18:46:56+01:00
Add proper fence around overlay rendering command buffers
-
d922db6d
by baldurk
at 2020-08-26T19:14:42+01:00
Fix broken re-use of resource shadow deferred ctx pointers. Closes #2023
-
1b844d14
by baldurk
at 2020-08-26T19:27:41+01:00
Add resettable chunk allocator for recording command buffers
-
51b228b0
by baldurk
at 2020-08-26T19:27:42+01:00
Disable resource record chunk locking for command buffers
* The API user is supposed to lock this for us, so don't waste time locking
ourselves.
-
9fd7f447
by baldurk
at 2020-08-26T19:27:42+01:00
Switch thumbnail to bytebuf instead of byte pointer and length
-
55c62dd3
by baldurk
at 2020-08-26T19:27:42+01:00
Serialise timestamps and durations as tick counts, and convert on replay
* When we're capturing programs with high-frequency enough API calls, the
overhead of the math & extra function calls over Timing::GetTick() is
measurable. Removing it and serialising pure tick based durations/timestamps
and then converting on replay gives us identical results and saves time while
background capturing.
-
61d15e00
by baldurk
at 2020-08-26T19:27:42+01:00
Don't create empty GLRenderState for use with MarkDirty
* MarkDirty re-queries the state and doesn't use anything so it's wasted time
initialising a massive structure
-
c5887eb4
by baldurk
at 2020-08-26T19:27:42+01:00
Reduce wasted iteration in GLRenderState::MarkDirty
* Only iterate up to the highest known bind for indexed targets, which will
generally be low or 0.
-
5e79465a
by baldurk
at 2020-08-26T19:27:42+01:00
Avoid use of virtual function call for GetID within GL driver
-
022ba9ce
by baldurk
at 2020-08-26T19:27:42+01:00
Combine GL maps for looking up ID/Resource Record from resource name
-
3a1b4500
by baldurk
at 2020-08-26T19:27:42+01:00
Avoid some unnecessary potentially expensive work on frequent calls
-
f63a9483
by baldurk
at 2020-08-26T19:27:42+01:00
Cache FBO attachments to avoid repeated query & lookup
-
8973ac02
by baldurk
at 2020-08-26T19:52:34+01:00
Don't serialise present chunk for glFrameTerminatorGREMEDY
-
50089207
by baldurk
at 2020-08-26T20:56:28+01:00
Fix 32-bit compile error
-
ecbfeb7d
by baldurk
at 2020-08-27T00:02:17+01:00
Fix linux compilation
-
3f63d153
by baldurk
at 2020-08-27T11:24:45+01:00
Fix extended thumbnail length not being written
-
4eeaaad7
by baldurk
at 2020-08-27T11:26:03+01:00
Fix event counting for single vulkan indirect multidraws. Closes #2025
* We need to count the fake indirect subcommand *before* checking if we're in
range, otherwise replaying up to but not including the draw will miscount and
replay the draw itself.
-
6d810f2c
by baldurk
at 2020-08-27T11:26:18+01:00
Fix naming getting muddled for indirect draws
-
3eaaf593
by baldurk
at 2020-08-27T13:19:21+01:00
Prefer floor rounding for Qt 5.14+ fractional DPI handling
* Non-integer DPI handling is fundamentally a broken concept, because UIs are
essentially pixel art with some vector drawing. Rounding down half fractions
seems to be a better tradeoff than rounding up or trying to render them as-is.
-
9583a267
by baldurk
at 2020-08-27T15:13:21+01:00
Fix typo that trashed durations and didn't convert timestamps
-
680857cb
by baldurk
at 2020-08-27T15:54:01+01:00
Fix structured data conversion to preserve timestamp base
* The timestamp base is queryable from the capture file and settable too, and
conversions preserve un-rebased timestamps. Only rebasing when loading a
capture for replay.
-
684290c4
by baldurk
at 2020-08-27T16:02:18+01:00
LZ4 compress embedded diagnostic log
-
4c8067b6
by baldurk
at 2020-08-27T16:02:53+01:00
Add special case to XML codec for embedded logfiles
-
8c4bb661
by baldurk
at 2020-08-27T17:36:34+01:00
Fix ptrace getting wrong entry point address for some ELFs. Closes #2022
* The entry point is remapped several times:
- ELF header declares it at RVA 0x1234
- [new in this change] The section containing that says it's at addresses
0x1200 - 0x1500, but on disk it's actually at file offset 0x1100 meaning our
entry point is actually 0x100 earlier, at 0x1134
- The ASLR maps the executable section at *file offset* 0x1100 to 0xDEADBEEF00
Importantly when file offset != base RVA, this needs to be taken into
account.
- Finally the entry point is at 0x34 offset into the section because it's
mmapped, so the entry point is 0xDEADBEEF34.
-
cc418495
by baldurk
at 2020-08-27T17:38:16+01:00
Add debug verbose logging toggle to ptrace code
-
220ee1b3
by baldurk
at 2020-08-27T17:57:09+01:00
Ensure RDStyle sets application palette properly
-
9c58c6ad
by baldurk
at 2020-08-27T19:34:12+01:00
32-bit compile fix
-
80ededa2
by thisisjimmyfb
at 2020-08-27T19:35:15+01:00
whitelist GL_OES_surfaceless_context
-
02b7c1bf
by baldurk
at 2020-08-28T19:06:05+01:00
Update toolwindowmanager to 7974fc8
-
0c1b3049
by baldurk
at 2020-08-28T19:06:05+01:00
Verify JSON documents being saved don't contain byte arrays
* Newer Qt versions will base64 the byte arrays even if we've already base64'd
them so they're safe. To prevent this we explicitly convert to QString
afterwards.
-
285c4b95
by baldurk
at 2020-08-28T19:06:05+01:00
Add Qt5Qml.dll stub for 32-bit pyside2 distribution
* When the pyside2 we ship was built it accidentally included a small dependency
on Qt5Qml, which we don't distribute so the pyside2 libraries wouldn't load.
* We can generate a tiny stub with the right exports and load it manually from
the PySide2 folder on 32-bit qrenderdoc builds to allow pyside2 to load
subsequently. The stub source is tiny, and added alongside.
* Putting it in the PySide2 folder means that even if someone puts RenderDoc's
build folder in their PATH, our stub Qt5Qml won't break anything because it
won't be loaded. If they put PySide2 in the PATH it might, but then it's their
fault!
-
716c72f3
by baldurk
at 2020-08-28T19:06:06+01:00
Remove custom FindPySide2.cmake, rely on normal packaging
* It seems PySide2 packaging is much more stable now, so we can generally rely
on the distro packages.
-
482bdbae
by baldurk
at 2020-08-28T19:06:06+01:00
Allow building from a custom Qt more easily on windows
* Setting RENDERDOC_QT_PREFIX64 or RENDERDOC_QT_PREFIX32 environment variables
pointing to a Qt install root will use that instead of the built-in Qt.
-
0e5b08d0
by baldurk
at 2020-08-28T19:06:06+01:00
Fix test compilation on linux
-
75f2dc11
by baldurk
at 2020-08-28T19:06:06+01:00
Fix missing free() calls for miniz allocations
-
30ecf66c
by baldurk
at 2020-08-28T19:06:06+01:00
Fix handling of variable descriptor counts to not allocate maximum size
* We previously ignored the variable descriptor size allowed by descriptor
indexing,
-
05eef7b9
by baldurk
at 2020-08-28T19:27:00+01:00
Temporarily disable chunk allocator on vulkan until reuse is fixed
-
4e8f96ac
by baldurk
at 2020-08-28T20:54:19+01:00
Re-enable chunk allocators on vulkan, reset individual pages
* On vulkan command pools aren't necessarily reset often or at all, individual
command buffers are. So the chunk allocator needs to support freeing subsets
of pages. When a command buffer ends we force that page to finish up and store
a list of the pages the command buffer used, which can then be reset back when
the command buffer is reset.
-
0ca90bd3
by baldurk
at 2020-08-31T10:10:51+01:00
Fix variable descriptor count test
-
052cd255
by baldurk
at 2020-08-31T10:43:19+01:00
Don't initialise AMD extensions during capture
-
8b935a1c
by baldurk
at 2020-08-31T10:51:32+01:00
Wrap and serialise calls through ID3D12CompatibilityDevice
-
d5f45f64
by baldurk
at 2020-08-31T12:38:49+01:00
Allow overriding the python install on windows
* Also document the new requirement for os.add_dll_directory as of python 3.8
-
b5a67962
by baldurk
at 2020-08-31T13:10:38+01:00
Allow qrenderdoc command line python scripts to call sys.exit()
* Previously we'd catch the sys.exit "exception" and print it then show the
window.
-
e61794dd
by baldurk
at 2020-09-01T10:27:45+01:00
Don't forcibly change tab in texture viewer when one is closed
-
d6b36f7a
by baldurk
at 2020-09-01T10:32:48+01:00
Fix handling of saving cubemaps to disk in GL
* GL needs special handling because cubemaps need to be treated partially as
arrays to select the target, then not as arrays when the data is retrieved.
-
eb575e12
by baldurk
at 2020-09-01T10:36:28+01:00
Don't hook vulkan-1.dll, prevents layered implementations from recursing
-
9f5e6a72
by baldurk
at 2020-09-01T10:42:42+01:00
Batch calls to UpdateBackgroundRefCache on descriptor copies
-
865f9002
by baldurk
at 2020-09-01T11:08:01+01:00
Keep remote server connection alive if it disconnects mid-replay
* We need to keep it alive until we've shut down the replay controller, and we
keep that alive until the user explicitly closes the capture.
-
6b2f763b
by baldurk
at 2020-09-01T11:09:03+01:00
Ignore sets of empty name strings on resources
-
83f7a26e
by baldurk
at 2020-09-01T14:03:59+01:00
Query which shader disassembly formats require a pipeline
* This allows us to be a bit more friendly in the UI when we don't have a
particular pipeline associated with a shader.
-
10878bb5
by baldurk
at 2020-09-01T16:39:19+01:00
Never clamp to an invalid index even for invalid inputs
* This prevents a crash as at least index 0 is always a valid scalar lookup.
-
f32262ad
by Andreas Hollandt
at 2020-09-01T16:59:08+01:00
support Intel performance counters on Windows
-
3b9b0d88
by baldurk
at 2020-09-01T17:20:52+01:00
Check that both pyside2 and shiboken2 are found
* It seems like packaging of these two is inconsistent, and pyside2 dev files
being available doesn't always imply shiboken2 dev files are present. Be safe
and check both.
-
55febc88
by baldurk
at 2020-09-01T17:39:05+01:00
Check shiboken2's python version matches python version we're linking to
* We also reverse Python_ADDITIONAL_VERSIONS so it finds the newest one. It
doesn't seem like there's a way in general to make these match, so we hope
that searching from newest to oldest will find the same in both - or at least
it makes it easier for the user to fix by installing the newest in both.
-
31b81ade
by baldurk
at 2020-09-02T10:22:11+01:00
Switch descriptor refs lock back to normal lock
* Unfortunately some programs have extreme contention on this lock due to
multithreaded descriptor set writes enabled by UPDATE_AFTER_BIND.
-
da0c836a
by baldurk
at 2020-09-03T17:26:48+01:00
Cache bufferviewer column width calculation
-
d71d275d
by baldurk
at 2020-09-03T17:45:41+01:00
Don't re-read entire logfile every time, only read from last position
-
3ac8746b
by baldurk
at 2020-09-03T17:45:41+01:00
Auto-size log view columns by hand
* Using the auto-resizing mode of RDHeaderView resizes based on the whole column
every time, which is wasteful when only a few lines are added to a large log.
-
4dbfca23
by baldurk
at 2020-09-03T18:07:46+01:00
Add std::hash overload for ResourceId to allow use in hashmaps/hashsets
-
c39a0bae
by baldurk
at 2020-09-03T18:07:47+01:00
Re-jig Following to hold a reference to TextureViewer
* This simplifies the code flow because we can be sure that we always have
cached read-only/read-write resources (this was true before, but now it's
clear).
-
ec023ac6
by baldurk
at 2020-09-03T18:07:47+01:00
Avoid unnecessary re-layouts when populating thumbnails
-
54286833
by baldurk
at 2020-09-03T18:08:35+01:00
Switch some maps to unordered_map where we only use them for lookups
-
afe3bee9
by baldurk
at 2020-09-03T18:08:39+01:00
Only lock in resource manager while capturing
* On replay currently we only have single-threaded access so the lock is just
overhead
-
56f82f6b
by baldurk
at 2020-09-03T18:09:47+01:00
Optimise UI for large descriptor arrays with few dynamically used binds
* We tune the pipeline state view and texture viewer to only iterate over a
small list of dynamically used binds in the (vastly more common) case where
unused binds are not being shown.
-
0c71c716
by baldurk
at 2020-09-03T18:58:30+01:00
Store command buffer page set in baked commands. Closes #2039
* If we keep the page set in the command buffer and destroy it on reset, we'll
free the pages behind the baked chunks that we stored. If a capture records
and resets a command buffer multiple times within a capture we need to store
multiple baked command buffers.
* So instead we give the baked commands ownership of those pages and reset them
when the baked commands record is destroyed (either because the command buffer
has been reset as it was before - or if we hold onto a reference during
capture then after the capture is done).
-
18a7e3c0
by baldurk
at 2020-09-04T10:32:17+01:00
We shouldn't return physical device entry points in vkGetDeviceProcAddr
* The spec says we only return a function pointer for device or device-child
functions. In practice the loader wraps instances and physical devices so when
calling a direct GDPA returned function the loader won't unwrap it so we won't
get our proper wrapped objects and will crash.
-
0e7bdc4c
by baldurk
at 2020-09-04T10:43:36+01:00
Fix python call to GetDisassemblyTargets
-
c96b05ec
by baldurk
at 2020-09-04T11:29:01+01:00
Fix primitive topology from extended dynamic state not being respected
-
d524eb8c
by baldurk
at 2020-09-04T11:29:12+01:00
Fix overlay bugs with extended dynamic state
-
6de8c53f
by baldurk
at 2020-09-04T11:39:10+01:00
Fix VK_Extended_Dynamic_State
-
55ac2c95
by baldurk
at 2020-09-04T11:50:02+01:00
Tweak handling of failed tests in artifacts log
-
9b37a8b8
by baldurk
at 2020-09-04T12:05:48+01:00
Don't print renderdoc log to stdout when running tests
-
9fc97f60
by baldurk
at 2020-09-04T12:06:09+01:00
Erase m_CurrentResources from the end not the beginning
* Since it's a sorted vector this avoids O(n^2) time to erase everything one by
one.
-
5a6feec9
by baldurk
at 2020-09-04T12:39:04+01:00
Speculative fix for intermittent failure in GL_Multithread_Rendering
* It seems like on nv windows we need to explicitly rebind the main context to
the main thread and give each worker thread its own window, to prevent the
worker thread from being unable to bind its context sometimes.
-
eba6f525
by baldurk
at 2020-09-04T12:51:56+01:00
Add success logs when each renderpass segment is verified
* It makes the log easier to read and so we know which part we're at if a pixel
fails.
-
d55cf930
by baldurk
at 2020-09-04T14:59:17+01:00
Don't make command line parsing a fatal error
-
acd75532
by baldurk
at 2020-09-04T15:00:16+01:00
Load main window initial layout before running python scripts
-
311dcb98
by baldurk
at 2020-09-04T15:02:04+01:00
Default to D3D11 pipeline state at the last minute
* If we default to D3D11 at construction time, if we have persist data (very
likely) and it's for another API then we'll have to destroy the D3D11 viewer
and recreate the other API's viewer.
-
2bfa2c0c
by baldurk
at 2020-09-04T16:39:42+01:00
Move histogram/minmax shaders into vulkan shader cache
* This lets us cache all shaders instead of having some be regenerated outside
the cache and looked up into it.
-
54db5aaf
by baldurk
at 2020-09-04T16:53:38+01:00
Store entries in vulkan shader cache for GLSL generation inputs
* GenerateGLSLShader is reasonably expensive because it uses glslang to
preprocess the shaders. If we can cache the input hash and look up the cache
with that hash then we can skip it entirely.
-
a0eadf47
by baldurk
at 2020-09-04T17:43:32+01:00
Push GCN ISA support checks onto separate thread
* The executables can take a little while to run, so we can do that in parallel
while loading the capture.
-
ecd23041
by baldurk
at 2020-09-04T18:34:28+01:00
Don't delete thread in LambdaThread until destructor
* This means a non-self deleting thread can be waited for or queried about still
after it's completed.
-
a2fa98be
by baldurk
at 2020-09-04T19:39:11+01:00
Move QNetworkAccessManager access onto separate thread
* QNetworkAccessManager is supposed to be asynchronous and threaded internally,
but calling get() the first time can take multiple *seconds* while it
initialises proxy data and loads ssl libraries.
* Qt's threading rules are so strict it's impossible to feasibly move
QNetworkAccessManager to another thread.
* Instead we use Qt's cross-thread signals and slots to move the whole thing
into a wrapper object. It's stupid.
-
fb3c2936
by baldurk
at 2020-09-04T23:23:31+01:00
Create a default SRV/UAV descriptor when needed. Closes #2040
* In D3D12 if the user passes NULL for the UAV or SRV descriptor when calling
Create*View we don't have the runtime to generate a default one for us when we
query, we'll just have nothing stored. So instead when we need to generate a
default "whole resource" descriptor to look up.
-
eaa24f85
by baldurk
at 2020-09-05T00:00:31+01:00
Mac compile fix
-
f446307d
by baldurk
at 2020-09-05T00:21:15+01:00
Add missing Qt header
-
fb178c46
by baldurk
at 2020-09-07T11:44:42+01:00
Fix missing thread sync when checking for GCN ISA support
-
b5222245
by baldurk
at 2020-09-07T11:44:57+01:00
Fix the wrong context params being serialised for implicit thread switch
-
9b46bf7c
by baldurk
at 2020-09-07T11:56:24+01:00
Don't reset chunk allocator mid-capture
* We may still need these chunks for previously submitted frames if we're saving
everything in a capture.
-
8def3179
by baldurk
at 2020-09-07T16:58:49+01:00
Don't use separate xfb objects without ARB_transform_feedback2 extension
* EXT_transform_feedback allow us to use what we want and is core in the minimum
replay version (3.0 for GL/GLES), but it doesn't include separate xfb objects.
-
b1c12ce1
by baldurk
at 2020-09-07T18:09:04+01:00
Don't re-order chunks for indirect draws. Closes #2042
* If we insert chunks next to the recorded commands for indirect draws we need
to update all other commands which are recorded but not submitted which have
chunk indices. Updating this could be very complex if the command buffer
record is only partially complete when the submit happens (which is quite
possible if it's not submitted until later), so instead we abandon trying to
have indirect chunks next to the recorded command chunks since it's not
strictly necessary.
-
47b972c8
by baldurk
at 2020-09-08T12:57:00+01:00
Set priority only after thread is running
-
facf150e
by baldurk
at 2020-09-08T12:57:00+01:00
Properly refresh all rows when filter model changes
-
515d4c5d
by baldurk
at 2020-09-08T12:57:00+01:00
Ignore generated initial states for images with no memory bound
-
218ce2ab
by baldurk
at 2020-09-08T12:57:01+01:00
Set NULL descriptor updates to valid offset/range
-
3d5aabdd
by baldurk
at 2020-09-08T12:57:01+01:00
Make sure to enable bufferDeviceAddressCaptureReplay on replay
* We used to get this 'for free' by serialising our patched device next chains,
but we no longer do that so we need to enable this bit on replay as well.
-
75cb5d18
by baldurk
at 2020-09-08T12:57:01+01:00
When memory has a dedicated allocation buffer, use it for wholeMemBuf
-
3f26f425
by baldurk
at 2020-09-09T16:40:00+01:00
Fix enabling of bufferDeviceAddressCaptureReplay
* We only enable this if we find an existing struct somewhere enabling the base
feature. Otherwise we might try to enable this when it's not supported at all.
-
78f1f8f3
by baldurk
at 2020-09-09T16:40:04+01:00
Remove volatile from Atomic parameter declarations
* This was leaky from windows' InterlockedIncrement etc declarations, and is not
necessary.
-
7cd76164
by baldurk
at 2020-09-09T16:40:07+01:00
Serialise max anisotropy level in GL texture & sampler initial states
-
10a01535
by baldurk
at 2020-09-10T11:49:16+01:00
Make Shiboken2/PySide2 searches QUIET to avoid scary warnings
* By default cmake will print huge scary warnings if the packages aren't
available instead of silently continuing and letting us check, which is a bad
default for optional packages.
-
2eb39ef8
by baldurk
at 2020-09-10T13:34:28+01:00
Check that shiboken/pyside targets exist
* Some ways of installing pyside provide a cmake script that's broken and
doesn't produce actual libraries/headers to link against.
-
3b04aa22
by baldurk
at 2020-09-10T13:34:44+01:00
Reduce the memory footprint of D3D12 objects
-
e9360a81
by baldurk
at 2020-09-10T13:35:16+01:00
Don't pre-allocate such large wrapped pools
* The cost of searching a few more pools to check allocations isn't so bad
especially if we can move IsAlloc() off the hot path. Better that than
allocating 100MB in pools.
-
fb19ccb5
by baldurk
at 2020-09-10T13:35:16+01:00
Don't pool-allocate D3D12 shaders
-
fdeea520
by baldurk
at 2020-09-10T13:35:32+01:00
Refactor and optimise D3D11 refcounting implementation
* In heavy D3D11 workloads the refcounting overhead especially during fast
binding changes was significant. Refactoring the refcounting to work on a
different model and deferring destruction of objects removes most of the
overhead.
-
d671c66b
by baldurk
at 2020-09-10T14:45:46+01:00
Remove reliance on wrapped pool IsAlloc
* In most cases we either know the type, or we can use the generic parent
WrappedDeviceChild11 to get what we want.
-
255f457c
by baldurk
at 2020-09-10T15:30:04+01:00
Fix crash accessing non-running thread
-
809b8f9f
by baldurk
at 2020-09-10T16:41:35+01:00
Add fallback on android if gpu debug layers are broken or inaccessible
-
966db7bd
by baldurk
at 2020-09-10T22:57:22+01:00
Add some more identified markers
-
33a1c9b2
by LukeRoss00
at 2020-09-11T15:31:31+01:00
Update win32_callstack.cpp
Module offset was mistakenly being erased together with .pdb extension
-
0d70327b
by baldurk
at 2020-09-11T16:31:10+01:00
Store resource type directly in VkResourceRecord
# Conflicts:
# renderdoc/driver/vulkan/vk_resources.h
-
8ca96aa8
by baldurk
at 2020-09-11T16:32:17+01:00
Fix arrays of UBOs not displaying properly in vulkan pipeline state
-
925b49da
by baldurk
at 2020-09-11T18:51:27+01:00
Fix handling of instance extensions in vulkan tests
-
6225c83d
by baldurk
at 2020-09-11T20:52:10+01:00
Fix handling of CreateCommandList1
* We would accidentally ignore the first Reset() call by attempting to avoid the
fake Reset() that CreateCommandList creates.
-
50ebd8d3
by baldurk
at 2020-09-12T23:15:17+01:00
Fix mistake enabling BDA capture replay if original BDA wasn't enabled
-
433a51cf
by baldurk
at 2020-09-12T23:15:44+01:00
Fix replay refcounting of D3D11 objects
-
ac8a90eb
by baldurk
at 2020-09-12T23:16:15+01:00
Fix refcounting of D3D12 shader objects
-
76d91d5e
by baldurk
at 2020-09-12T23:18:04+01:00
Don't allow static logfile string to destruct before RenderDoc singleton
-
c455fa9d
by baldurk
at 2020-09-14T12:31:57+01:00
Fix broken Unwrap() on D3D12
-
213e19be
by baldurk
at 2020-09-14T12:33:28+01:00
Fix double-delete of immediate context on D3D11
-
1286f4b2
by baldurk
at 2020-09-14T13:01:14+01:00
Fix issues identified by synchronisation layer
-
f5786077
by Omar El Sheikh
at 2020-09-14T15:19:51+01:00
Added Android Hardware Buffer Extension Support
Added support for the VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER
device extension on Android
*Created necessary hooks for vkGetAndroidHardwareBufferPropertiesANDROID
and vkGetMemoryAndroidHardwareBufferANDROID
-
6236f2b6
by Omar El Sheikh
at 2020-09-14T15:19:51+01:00
Added Struct Handling/Serialization
Added initial support for these structs:
*VkAndroidHardwareBufferPropertiesANDROID
*VkMemoryGetAndroidHardwareBufferInfoANDROID
*VkAndroidHardwareBufferFormatPropertiesANDROID
*VkExternalFormatANDROID
*VkAndroidHardwareBufferUsageANDROID
*VkImportAndroidHardwareBufferInfoANDROID
-
60eb2c5a
by Omar El Sheikh
at 2020-09-14T15:19:51+01:00
Handle pNext Chain for Android External Memory
Updated vk_next_chains.cpp to handle serializing of the new structs
Updated VkCreateInfo function to check for Android External Buffer
Fixes to vk_serialize.cpp to serialize structs properly
-
ce1cfe53
by baldurk
at 2020-09-14T15:27:46+01:00
Provide more specific error on external-imported resources
* When capturing some external memory driver implementations have completely
disjoint memory type bits allowed for external and non-external resources.
This means it is impossible to capture it as external and then replay it as
non-external, leading to a broken capture.
* This is warned about at capture time but easy to miss. Adding this error here
is more likely to be seen and found.
-
8615c5fc
by baldurk
at 2020-09-14T15:30:49+01:00
Speculative support for 10-bit backbuffers on GL
-
c8fcdbae
by baldurk
at 2020-09-14T15:58:20+01:00
Update fetch_shader python example to latest API
-
4ec62818
by baldurk
at 2020-09-15T11:23:34+01:00
Fix disabled convenience test for unit testing DXBC
-
9877b635
by baldurk
at 2020-09-15T11:24:06+01:00
Fix disassembly of relative-addressing operands in DXBC
* Most of the time we can map this to a reflection variable but if we can't, we
must print the correct index.
-
496bbbe9
by baldurk
at 2020-09-15T13:11:37+01:00
Don't allocate chunks from allocator when data is external
* This can lead to lifetime issues if the allocator is reset and now the
external-data pointer or bool can be trashed. Instead if the data allocation
can't come from the allocator, allocate both data and chunk externally.
-
299249d7
by baldurk
at 2020-09-15T13:16:57+01:00
Fix D3D12 command list reset not getting correct init parameters
-
11719a25
by baldurk
at 2020-09-15T17:27:58+01:00
Perform samples in vertex shader for vertex debugging on D3D12
* On D3D11 we just queried the resource & sampler binding from whichever stage
it was on and bound it to the pixel shader. On D3D12 we re-use the root
signature which means we need to fetch the binding in the stage it was used
originally. VS t0,space0 could be different from PS t0,space0.
-
35bbb0d2
by baldurk
at 2020-09-16T11:50:44+01:00
Fix incorrect GL compatibility version check
-
b0d3cad2
by baldurk
at 2020-09-16T14:22:31+01:00
Add logging when new GL sharegroups are created
-
e73ce8f8
by baldurk
at 2020-09-16T14:29:28+01:00
Don't delete from m_CurrentResources when removing resource record
* This is handled when the resource is destroyed itself, we just NULL out the
pointer.
-
9b40bb72
by baldurk
at 2020-09-16T15:33:09+01:00
Fix wrong ID being serialised for deferred contexts
-
6a3b29cb
by baldurk
at 2020-09-16T16:39:07+01:00
Add opt-out flag for vulkan appinfo replacement
-
a3b6adc3
by baldurk
at 2020-09-16T17:03:27+01:00
Linux demos compile fix
-
720a58a2
by baldurk
at 2020-09-17T12:57:59+01:00
Disable very spammy warning in release builds
* The warning is real, this is a problem with the application, but some programs
cause a lot of barriers to hit this.
-
9d642c12
by baldurk
at 2020-09-17T13:08:32+01:00
Remove unused call to GetPDP2 for Vulkan12Properties
-
56f76f6f
by baldurk
at 2020-09-17T13:24:49+01:00
Don't try to read primitive ID in pipeline that contains a GS
* We can't do it unless the GS writes primitive ID, which we could check for but
is highly unlikely.
-
4809615a
by baldurk
at 2020-09-17T15:05:21+01:00
Don't print hit information until we know it's a drawcall
-
0ed941be
by baldurk
at 2020-09-17T17:23:25+01:00
Don't display window cycling message on platforms without keyboard input
-
381fdbe0
by baldurk
at 2020-09-17T17:43:28+01:00
Fix missing format argument in error message
-
48f04009
by Jordan Justen
at 2020-09-21T02:17:15-07:00
Merge tag 'v1.10' into debian/master
v1.10
-
73a0df26
by Jordan Justen
at 2020-09-21T02:41:09-07:00
Start 1.10+dfsg-1 changelog
Signed-off-by: Jordan Justen <jljusten@debian.org>
-
0e862882
by Jordan Justen
at 2020-09-21T02:46:35-07:00
debian/copyright: Remove qrenderdoc/3rdparty/pyside from dfsg source
Signed-off-by: Jordan Justen <jljusten@debian.org>
-
1f039cea
by Jordan Justen
at 2020-09-21T02:48:37-07:00
debian/patches: Rebase patches for v1.10
Signed-off-by: Jordan Justen <jljusten@debian.org>
-
a616f951
by Jordan Justen
at 2020-10-09T03:01:44-07:00
d/changelog: Release 1.10+dfsg-1 to unstable
Signed-off-by: Jordan Justen <jljusten@debian.org>