History log of /external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
9e1dc104329562eb8a3e4a20f0320af20b9af589 23-Nov-2016 Marek Olšák <marek.olsak@amd.com> ddebug: fix hang detection with deferred flushes

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
10e5f126dd08849d9d209c8c0b80f2d2f6527571 05-Oct-2016 Marek Olšák <marek.olsak@amd.com> ddebug: dump most driver information with GALLIUM_DDEBUG=always

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
c723acc03dc39388e75d2c5919b99cd7b4d7e7cc 10-Sep-2016 Marek Olšák <marek.olsak@amd.com> ddebug: dump shader buffers and images

this was unimplemented

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
54272e18a682c8b82d4a86b2c07b51c303d8cead 06-Aug-2016 Marek Olšák <marek.olsak@amd.com> gallium: add a pipe_context parameter to fence_finish

required by glClientWaitSync (GL 4.5 Core spec) that can optionally flush
the context

Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
a909210131494a6a131855d7d344b61b81fbf40e 09-Aug-2016 Marek Olšák <marek.olsak@amd.com> gallium: add render_condition_enable param to clear_render_target/depth_stencil

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
06b2fd04f6bc2f511f0c67a9b18f01b8f7296edc 07-Aug-2016 Marek Olšák <marek.olsak@amd.com> ddebug: dump driver states and shaders for apitrace calls

I think this was an oversight when the PIPE_DUMP flags were added.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
6573ad69ef836118c006acd7ccd3506e5c023b6e 30-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: print the command line to all logs (v2)

for piglit with the pipelined hang detection mode

v2: rebase on top of Brian's commit

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
840353059a35453e8a960673474e8a37d6f1a97a 30-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: don't use fmemopen on non-Linux OS

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97140

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
bade0cd0fbbf8004626e485806973d18f493749a 27-Jul-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> ddebug: use pclose to close a popen()'d FILE

Found by Coverity.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
b47727a83ad6b5386f27b2c174a5c0f110a61038 19-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: implement pipelined hang detection mode

For good performance while being able to generate decent hang reports.
The report doesn't contain the parsed IB and the buffer list, but it
isolates the draw call and dumps shaders while not having to flush
the context.

This is for GPU hangs that are harder to reproduce and require interactive
playing for minutes or even hours.

dd_pipe.h explains some implementation details. Initializing, copying
(recording) and clearing states is most of the code.

The performance should be at least 50% of the normal performance depending
on the circumstances. (i.e. 50% is expected to be the worst case scenario,
not the best case) The majority of time is spent in
dump_debug_state(PIPE_DUMP_CURRENT_SHADERS) and that's after all
the optimizations in later patches. There is no obvious way to optimize
that further.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
0795a3d54f7748d27020851f2e9b4b7637597590 22-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: don't save pointers to call parameters

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
e4079677a7819a79a4e59425688000f15ceb19d7 22-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: move dd_call into dd_pipe.h

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
d50f9e9b04266756e16c3afaead8f20944e0f562 19-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: separate draw call dumping logic

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
95c3025a4163128584900b8f377d299c8e707d17 13-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: move all states into a separate structure

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
f7720948cca971606c90b96c67128b93737af09d 20-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: write contents of dmesg into hang reports

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
6b9924ccb67ad04ef8f3020dd08a5b47d4ec06e2 19-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: don't use abort()

We don't want a core dump.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
26ef8158ac3c076cba0c1bcc4b42fdf233562cf9 19-Jul-2016 Marek Olšák <marek.olsak@amd.com> ddebug: make dd_get_file_stream accept the screen only

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
6bf81de339289b0d005553414ce568b136a0ca5f 19-Jul-2016 Marek Olšák <marek.olsak@amd.com> gallium: rework flags for pipe_context::dump_debug_state

The pipelined hang detection mode will not want to dump everything.
(and it's also time consuming) It will only dump shaders after a draw call
and then dump the status registers separately if a hang is detected.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
642cf400aa806281720acbe599a35a6a176c04b3 30-Jun-2016 Marek Olšák <marek.olsak@amd.com> ddebug: add an option to dump info about a specific apitrace call

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
1daec2b795a2c029b89202a15142376ac701bc39 30-Jun-2016 Marek Olšák <marek.olsak@amd.com> ddebug: implement pipe_context::generate_mipmap

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
50b223547814cefc0e7130e199fabc4dbedf97ce 30-Jun-2016 Marek Olšák <marek.olsak@amd.com> ddebug: record and dump apitrace call numbers

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
ac77fb74a018c37bbc0d42d9d4fafc1b8511ad3f 21-Apr-2016 Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> gallium/ddebug: Implement launch_grid.

Does not implement dumping info.

Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
41875ac4edd8c884225c44c0840bd20291b410ca 21-Jan-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> gallium/ddebug: add 'verbose' option

This currently just writes out the name of dump files, which can be useful
to easily correlate those files with other log outputs (driver debug output,
apitrace calls, etc.)

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
f4c8fa4e49bf4a938bb0ec9ee7ff686e7c8007dc 21-Jan-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> gallium/ddebug: make 'noflush' also affect 'always' mode

This changes the default behavior of 'always' mode to be consistent with
hang detection mode.

I have used this to more easily compare dumped command streams using diff.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
d640f179d314abef4d82bf3237197f1278415d36 08-Dec-2015 Nicolai Hähnle <nicolai.haehnle@amd.com> gallium/ddebug: regularly log the total number of draw calls

This helps in the use of GALLIUM_DDEBUG_SKIP: first run a target application
with skip set to a very large number and note how many draw calls happen
before the bug. Then re-run, skipping the corresponding number of calls.
Despite the additional run, this can still be much faster than not skipping
anything.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
b86d5ccae2b6280ad26d1060295fcc4963e90011 08-Dec-2015 Nicolai Hähnle <nicolai.haehnle@amd.com> gallium/ddebug: add GALLIUM_DDEBUG_SKIP option

When we know that hangs occur only very late in a reproducible run (e.g.
apitrace), we can save a lot of debugging time by skipping the flush and hang
detection for earlier draw calls.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
89f73827d03e28af548cc11247ebd6e2825789af 26-Sep-2015 Marek Olšák <marek.olsak@amd.com> ddebug: separate creation of debug files

This will be used by radeonsi for logging.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c
525921ed51176255474c73adacfc6801a7bf2783 04-Jul-2015 Marek Olšák <marek.olsak@amd.com> gallium/ddebug: new pipe for hang detection and driver state dumping (v2)

v2: lots of improvements

This is like identity or trace, but simpler. It doesn't wrap most states.

Run with:
GALLIUM_DDEBUG=1000 [executable]
where "executable" is the app and "1000" is in miliseconds, meaning that
the context will be considered hung if a fence fails to signal in 1000 ms.

If that happens, all shaders, context states, bound resources, draw
parameters, and driver debug information (if any) will be dumped into:
/home/$username/dd_dumps/$processname_$pid_$index.

Note that the context is flushed after every draw/clear/copy/blit operation
and then waited for to find the exact call that hangs.

You can also do:
GALLIUM_DDEBUG=always
to do the dumping after every draw/clear/copy/blit operation without
flushing and waiting.

Examples of driver states that can be dumped are:
- Hardware status registers saying which hw block is busy (hung).
- Disassembled shaders in a human-readable form.
- The last submitted command buffer in a human-readable form.

v2: drop pipe-loader changes, drop SConscript
rename dd.h -> dd_pipe.h

Acked-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
/external/mesa3d/src/gallium/drivers/ddebug/dd_draw.c