Skip to content

perf(agc): draw non-indexed mesh indirect draws from their records on the GPU - #7894

Closed
eljackjoestar-cmd wants to merge 1 commit into
boykopovar:mainfrom
eljackjoestar-cmd:perf/gpu-non-indexed-mesh-indirect
Closed

eljackjoestar-cmd wants to merge 1 commit into
boykopovar:mainfrom
eljackjoestar-cmd:perf/gpu-non-indexed-mesh-indirect

Conversation

@eljackjoestar-cmd

Copy link
Copy Markdown
Contributor

What

ClassifyIndirectDraw took the GPU-side path for a mesh-path indirect draw only when the draw was indexed. A non-indexed (auto) mesh draw was classified NonVertexPath. The driver then read its records on the CPU, waiting for the GPU writes queued before them, and drew from the values it read.

This change resolves an auto draw's mesh arguments on the GPU too, in the same MeshArguments.comp pass that indexed draws use.

  • MeshArgumentRulesFor takes the index count as std::optional. An auto draw has no index buffer, so its count is not clamped (indexCount is UINT32_MAX) and MeshArgumentRules::indexed is false. The flag reaches the pass in the push word that was unused.
  • An auto draw's start vertex is not an index offset, so its first index is 0 (ResolveMeshArguments and the pass). The GPU-side mesh path requires no base-vertex SGPR location. Without one, the driver's vertex rule is Constant, and the vertex offset reaches the shader as vertexConstant (VGT_INDX_OFFSET plus the vertex-offset user word), as for every other indirect draw.
  • prepareDrawInputs no longer refuses a non-indexed indirect mesh draw. A tessellated or quad-list indirect draw is still refused.

New meshArgumentTests cases cover an auto draw: it takes the record's count, its start vertex is not an index offset, and it draws nothing without a complete triangle.

Tested

Windows 11 Pro 26300, Ryzen 7 7800X3D, NVIDIA GeForce RTX 5070 (driver 617.14), WinLibs GCC 15.2 UCRT, Release.

Focused tests. Run on main 6762694 and on this branch, same machine, with VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation ANYPS5_NO_SHADER_CACHE=1 ANYPS5_REQUIRE_VULKAN=1 ctest --test-dir build -R <pattern> -V. The tests include agc_driver_graphics, agc_driver_mesh* and the indirect-argument tests.

  • 63/63 pass on both.
  • Neither log contains was not found but was requested by env var VK_INSTANCE_LAYERS.
  • Both logs hold the same two validation errors, from agc_driver_indirect_arguments_pending_producer: VUID-vkCmdWaitEvents-srcStageMask-01158 and VUID-vkSetEvent-event-09543. This change adds none.
The 63 focused tests (same set on main and the change)

agc_command_batch_fence_failure, agc_compute_descriptor_layout_flags, agc_copy_input_kept_bytes, agc_dcc_key_sharing, agc_depth_copy_kept_bytes, agc_descriptor_cache, agc_descriptor_pool_reset_failure, agc_display_buffer_dcc, agc_driver_address_space_teardown, agc_driver_alpha_to_coverage_state, agc_driver_buffer_descriptor_runtime, agc_driver_covered_centroid_state, agc_driver_dcc_key_presync, agc_driver_dcc_keys_first_write, agc_driver_fill_cover_keys, agc_driver_gpu_indirect_arguments_misaligned_writer_ahead, agc_driver_gpu_indirect_arguments_written_ahead, agc_driver_graphics, agc_driver_guarded_null_pointer, agc_driver_indirect_arguments_pending_producer, agc_driver_indirect_arguments_written_ahead, agc_driver_indirect_patched_stage, agc_driver_memory_value_fill, agc_driver_mesh, agc_driver_mesh_draw_relocation, agc_driver_mesh_index_cache, agc_driver_mesh_provoking_layer, agc_driver_mesh_provoking_vertex, agc_driver_msaa_dcc_state, agc_driver_rect_list_indirect, agc_driver_sample_location_grid_fallback, agc_driver_sparse_indirect_indices, agc_driver_sparse_indirect_indices_unreadable, agc_driver_staged_clear_sampled_read, agc_driver_undithered_alpha_to_coverage_state, agc_driver_unused_viewport_depth, agc_heap_mirror_run_unwatch, agc_heap_mirror_run_unwatch_no_space_cache, agc_heap_mirror_unwatch, agc_heap_mirror_unwatch_no_space_cache, agc_pipeline_journal, agc_pipeline_library_clear_waits_for_build, agc_pipeline_store_lazy_buffer_pool, agc_shader_bindless, agc_shader_entry_lane_proof_budget, agc_shader_frontend_pair, agc_shader_frontend_pair_off, agc_shader_layout_pair, agc_shader_layout_pair_off, agc_shader_memory, agc_shader_quad_mask_no_demote, agc_shader_selected_records_direct_image_limit, agc_shader_selected_records_direct_pair_limit, agc_shader_selected_records_image_limit, agc_shader_selected_records_pair_limit, agc_shader_srt_read_patching, agc_shader_table_snapshot_reuse, agc_shader_type_zero_image_materialization, agc_sparse_buffer_holes, agc_sparse_heap_mirror_unwatch, agc_sparse_heap_mirror_unwatch_no_space_cache, agc_write_tracking, agc_write_watch_coverage

Performance. PPSA28099 start screen ("Press any button to continue"), 3840x2160. The title issues non-indexed mesh indirect draws (DRAW_INDIRECT, no base-vertex or instance location). Without this change they take the CPU path: APS5_TRACE_INDIRECT_DRAWS=1 prints -> cpu (non-vertex path) for them.

main cannot run this title: at 6762694 it stops at boot with indirect register sentinel semantics are not implemented (Execution/src/Pm4.cpp:47). The captures below use the base the title runs on: main a62c724 with #6094 and #6160 (both merged since), #6146, #6366 and #7644, commit b3d5d03d6.

  • The changes were built as uncommitted trees on that commit, so every summary line names b3d5d03d6d13. The base lines have "dirty":false and the change lines "dirty":true.
  • Each run lasts 180 s from launch with APS5_TRACE_SUMMARY_EVERY=10, APS5_LAZY_SHADER_PREPARE=1 and APS5_NO_PAD_INPUT=1, a warm shader cache, and no other APS5_TRACE_* or APS5_PROFILE_* switch. Only interval summary lines were written; there is no trace file to attach.
  • FPS is presents over 90-155 s. Frame p50 is the median of the intervals' p50. Driver.Packet.draw is the mean ms per frame from top_phases_ms_per_frame.
Run Build FPS Frame p50 GPU busy / present Driver.Packet.draw
ctl-1 base 2.76 325.9 ms 259.2 ms 191.8 ms
ctl-2 base 2.78 323.5 ms 254.9 ms 194.2 ms
mesh-1 base + this change 2.40 414.6 ms 242.9 ms 203.6 ms
srt-1 base + first version of #7891 2.89 328.4 ms 248.6 ms 182.2 ms
srt-2 same 2.80 321.8 ms 258.3 ms 189.8 ms
both-1 base + first version of #7891 + this change 2.96 306.0 ms 266.3 ms 93.3 ms
both-2 same 3.01 298.6 ms 263.5 ms 91.3 ms
strict-1 base + #7891 + this change + the DCC extent PR 2.98 314.4 ms 250.5 ms 78.2 ms

The strict-1 build chose the final rule of #7891 through a temporary switch (APS5_DEBUG_STRICT_UNION=1), which is not part of either PR.

On its own this change is slower on this scene: 2.40 against 2.77 FPS. With the capture change of #7891 it is faster: 2.99 against 2.85 FPS with the first version of #7891 alone, and Driver.Packet.draw halves. Hence Depends on: #7891.

The slowdown alone was not profiled. A likely cause is that the resource captures of the draws that follow still wait for GPU-pending branch words, the waits #7891 removes. Without the CPU read of the records, the queue is no longer drained before those waits.

tools/trace_digest.py, base (ctl-2)

17 intervals, 0.0 to 179.1 s, 416 presents
NVIDIA GeForce RTX 5070, NVIDIA 617.14, Windows 10.0.26300, 3840x2160, commit b3d5d03d6d13

# seconds presents p50 p90 p99 max GPU busy busiest worker largest phase
1 0-13 24 54.0 253.2 6962.3 6962.3 39.0 67 % Driver.Packet 597.0
2 13-24 10 1186.0 1798.9 1798.9 1798.9 414.9 100 % Driver.Packet 2061.6
3 24-35 16 584.8 1249.6 1328.4 1328.4 346.8 100 % Driver.Packet 1277.5
4 35-46 21 455.1 740.0 1097.1 1097.1 316.3 100 % Driver.Packet 933.8
5 46-56 17 516.7 698.7 1317.8 1317.8 397.0 100 % Driver.Packet 1064.1
6 56-66 18 555.0 738.1 1004.2 1004.2 389.3 100 % Driver.Packet 1057.2
7 66-77 20 478.6 665.1 735.3 735.3 354.6 100 % Driver.Packet 934.5
8 77-87 24 415.8 551.4 918.5 918.5 310.3 100 % Driver.Packet 762.0
9 87-97 30 327.0 405.7 442.4 442.4 243.8 99 % Driver.Packet 601.8
10 97-107 31 323.5 378.1 394.0 394.0 239.9 99 % Driver.Packet 593.0
11 107-118 30 332.7 396.1 410.6 410.6 249.6 99 % Driver.Packet 612.1
12 118-128 31 320.4 378.1 406.7 406.7 233.7 99 % Driver.Packet 594.8
13 128-138 22 322.1 714.8 2029.6 2029.6 239.7 100 % Driver.Packet 854.9
14 138-149 29 324.3 403.0 953.0 953.0 311.5 99 % Driver.Packet 630.4
15 149-159 32 321.5 329.3 338.9 338.9 246.7 99 % Driver.Packet 572.8
16 159-169 30 327.7 382.7 419.4 419.4 233.3 99 % Driver.Packet 594.8
17 169-179 31 325.7 331.5 377.5 377.5 240.0 99 % Driver.Packet 581.3
p99 ms  @::_:_______-_._.  0-6962.3
gpu ms  _@%#@%%#+++++#+++  0-414.9
tools/trace_digest.py, this change alone (mesh-1)

17 intervals, 0.0 to 180.1 s, 345 presents
NVIDIA GeForce RTX 5070, NVIDIA 617.14, Windows 10.0.26300, 3840x2160, commit b3d5d03d6d13 (dirty)

# seconds presents p50 p90 p99 max GPU busy busiest worker largest phase
1 0-16 24 50.7 245.3 9843.5 9843.5 36.8 73 % Driver.Packet 769.1
2 16-26 10 1166.8 1515.5 1515.5 1515.5 419.8 100 % Driver.Packet 2001.0
3 26-36 14 542.5 1316.9 1443.4 1443.4 317.5 100 % Driver.Packet 1288.4
4 36-47 18 494.6 760.3 1158.7 1158.7 362.9 100 % Driver.Packet 995.1
5 47-57 18 537.7 702.0 1139.0 1139.0 366.0 100 % Driver.Packet 1022.0
6 57-68 14 733.0 1090.2 1604.6 1604.6 427.3 100 % Driver.Packet 1343.0
7 68-78 18 607.6 675.5 776.6 776.6 359.9 100 % Driver.Packet 997.5
8 78-88 20 495.3 609.4 714.0 714.0 312.7 100 % Driver.Packet 865.8
9 88-98 22 415.8 587.0 999.6 999.6 296.5 100 % Driver.Packet 792.3
10 98-109 24 414.6 465.4 492.9 492.9 243.4 100 % Driver.Packet 717.1
11 109-119 24 415.1 433.3 456.5 456.5 242.6 100 % Driver.Packet 702.7
12 119-129 25 409.3 436.9 463.1 463.1 242.7 100 % Driver.Packet 700.8
13 129-139 24 415.0 437.5 451.9 451.9 242.8 100 % Driver.Packet 703.5
14 139-149 25 410.6 419.1 423.6 423.6 242.8 100 % Driver.Packet 692.3
15 149-160 16 417.3 1374.5 2071.8 2071.8 334.0 100 % Driver.Packet 1134.8
16 160-170 24 419.7 430.3 512.4 512.4 267.0 100 % Driver.Packet 707.4
17 170-180 25 415.0 432.3 437.5 437.5 241.3 100 % Driver.Packet 695.6
p99 ms  @________.....:..  0-9843.5
gpu ms  _@#%%@%#*+++++#*+  0-427.3
tools/trace_digest.py, first version of #7891 (srt-2)

17 intervals, 0.0 to 175.9 s, 408 presents
NVIDIA GeForce RTX 5070, NVIDIA 617.14, Windows 10.0.26300, 3840x2160, commit b3d5d03d6d13 (dirty)

# seconds presents p50 p90 p99 max GPU busy busiest worker largest phase
1 0-13 24 50.7 240.7 6969.3 6969.3 35.6 68 % Driver.Packet 588.7
2 13-23 10 1168.8 1737.0 1737.0 1737.0 407.3 100 % Driver.Packet 2008.8
3 23-33 15 477.6 1215.2 1325.9 1325.9 310.1 100 % Driver.Packet 1239.0
4 33-43 19 454.1 740.0 1049.6 1049.6 355.2 100 % Driver.Packet 955.8
5 43-53 18 522.4 678.1 1100.6 1100.6 363.6 100 % Driver.Packet 1007.6
6 53-63 15 579.8 946.6 1612.9 1612.9 428.0 100 % Driver.Packet 1225.7
7 63-74 19 561.5 654.6 704.0 704.0 358.8 100 % Driver.Packet 964.1
8 74-84 23 443.7 546.4 565.9 565.9 288.5 100 % Driver.Packet 780.1
9 84-94 28 328.7 388.0 909.5 909.5 279.4 99 % Driver.Packet 655.5
10 94-104 31 318.9 359.6 439.6 439.6 239.4 99 % Driver.Packet 586.3
11 104-114 30 327.7 388.0 409.4 409.4 239.8 99 % Driver.Packet 601.9
12 114-125 31 321.8 355.5 395.1 395.1 248.6 99 % Driver.Packet 587.7
13 125-135 29 318.4 384.0 1329.9 1329.9 230.5 99 % Driver.Packet 648.5
14 135-145 22 324.3 724.3 2012.6 2012.6 333.4 100 % Driver.Packet 820.9
15 145-155 32 321.6 329.0 332.3 332.3 239.0 99 % Driver.Packet 569.6
16 155-166 31 324.1 359.4 380.3 380.3 240.7 99 % Driver.Packet 582.5
17 166-176 31 325.5 354.3 387.9 387.9 239.4 99 % Driver.Packet 585.4
p99 ms  @::__:______:-.._  0-6969.3
gpu ms  _@##%@%**++++#+++  0-428.0
tools/trace_digest.py, first version of #7891 + this change (both-2)

17 intervals, 0.0 to 175.7 s, 441 presents
NVIDIA GeForce RTX 5070, NVIDIA 617.14, Windows 10.0.26300, 3840x2160, commit b3d5d03d6d13 (dirty)

# seconds presents p50 p90 p99 max GPU busy busiest worker largest phase
1 0-13 24 50.0 242.0 7148.1 7148.1 35.7 68 % Driver.Packet 603.2
2 13-23 10 1164.3 1440.2 1440.2 1440.2 410.2 100 % Driver.Packet 1946.5
3 23-34 16 560.7 1222.1 1322.0 1322.0 347.6 100 % Driver.Packet 1281.2
4 34-44 21 427.6 700.9 1059.1 1059.1 317.1 100 % Driver.Packet 928.4
5 44-54 18 549.7 669.8 1292.4 1292.4 405.4 100 % Driver.Packet 1068.8
6 54-64 18 528.8 720.0 1246.6 1246.6 381.3 100 % Driver.Packet 1089.6
7 64-75 21 449.0 574.1 650.0 650.0 354.0 100 % Driver.Packet 915.3
8 75-85 27 333.4 520.8 905.5 905.5 299.8 99 % Driver.Packet 713.5
9 85-95 33 297.4 348.8 392.1 392.1 242.6 99 % Driver.Packet 569.3
10 95-105 33 294.1 343.9 379.0 379.0 240.6 99 % Driver.Packet 563.8
11 105-115 32 306.5 353.7 400.9 400.9 242.3 99 % Driver.Packet 578.4
12 115-125 34 293.5 322.4 345.7 345.7 241.1 99 % Driver.Packet 556.3
13 125-135 19 320.6 1349.4 2016.6 2016.6 351.4 100 % Driver.Packet 992.8
14 135-145 34 298.6 304.4 312.4 312.4 242.0 99 % Driver.Packet 546.4
15 145-155 33 299.2 330.8 368.0 368.0 242.5 99 % Driver.Packet 555.1
16 155-166 34 298.1 306.5 339.7 339.7 242.8 99 % Driver.Packet 548.7
17 166-176 34 296.5 305.3 340.2 340.2 242.2 99 % Driver.Packet 547.5
p99 ms  @::_::__.._.-....  0-7148.1
gpu ms  _@%#@%%#++++%++++  0-410.2

The raw aps5-summary.jsonl lines of the 90-155 s window for these runs are in the two comments below.

Overlap. tools/pr_overlap.py --branch finds no open PR that changes the same lines. It lists PRs that conflict with main and share Draw.cpp, Draw.hpp, Recorder.* or tests/Graphics.cpp; none of them changes the mesh indirect classification or the mesh argument pass.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: perf(shader): don't wait on GPU-pending branch words that only select read-only buffers #7891
  • Fixes: none
  • Unblocks: none
  • GPUs tested: NVIDIA GeForce RTX 5070, driver 617.14, Windows 11 Pro 26300 (focused tests with the validation layer, and PPSA28099). Linux not run.
  • AI-assisted: yes (Claude Code)

… the GPU

A mesh-path indirect draw took the GPU-side path only when it was
indexed. An auto draw was classified NonVertexPath, so the driver read
its records on the CPU and waited for the GPU writes queued before them.

Resolve the mesh arguments of an auto draw on the GPU as well. It has no
index buffer, so its count is not clamped, and its start vertex reaches
the shader only through a base-vertex user SGPR, which the GPU-side path
requires to be absent, so its first index is 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added perf Performance change perf numbers missing perf pull request without a before and after summary line labels Oct 19, 2026
@github-actions

Copy link
Copy Markdown

This pull request is labeled perf, so it needs the summary line of a capture on main and one with the change, from the same title, scene and machine, as the Performance report form asks. Please paste both aps5-summary.jsonl lines, attach the two traces and add the output of tools/trace_digest.py.

@eljackjoestar-cmd

Copy link
Copy Markdown
Contributor Author

Raw aps5-summary.jsonl lines of the 90-155 s window, base (ctl-2) and this change alone (mesh-1):

ctl-2

{"commit":"b3d5d03d6d13","dirty":false,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":180,"ms":10304.757},"interval_start_s":97.151,"interval_end_s":107.456,"presents":31,"frame_ms":{"p50":323.520,"p90":378.092,"p99":394.011,"max":394.011},"gpu_busy_ms_per_present":239.873,"worker_busy_pct":{"queue worker 0x0":99.442,"queue worker 0x20":79.429},"top_phases_ms_per_frame":{"Driver.Packet":593.029,"Driver.Packet.dispatch":200.304,"Driver.Packet.draw":175.543,"Driver.Draw":175.115,"Driver.Dispatch":162.771,"Driver.Draw.shader_compile_and_link":129.831,"Shader.DrawStage":126.023,"Shader.DrawStage.capture_resources":114.033},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":false,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":211,"ms":10296.895},"interval_start_s":107.456,"interval_end_s":117.753,"presents":30,"frame_ms":{"p50":332.659,"p90":396.147,"p99":410.646,"max":410.646},"gpu_busy_ms_per_present":249.559,"worker_busy_pct":{"queue worker 0x0":99.445,"queue worker 0x20":79.392},"top_phases_ms_per_frame":{"Driver.Packet":612.120,"Driver.Packet.dispatch":208.945,"Driver.Packet.draw":177.392,"Driver.Draw":176.964,"Driver.Dispatch":169.228,"Driver.Draw.shader_compile_and_link":127.897,"Shader.DrawStage":124.051,"Shader.DrawStage.capture_resources":112.126},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":false,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":241,"ms":10301.473},"interval_start_s":117.753,"interval_end_s":128.054,"presents":31,"frame_ms":{"p50":320.415,"p90":378.110,"p99":406.711,"max":406.711},"gpu_busy_ms_per_present":233.692,"worker_busy_pct":{"queue worker 0x0":99.433,"queue worker 0x20":80.008},"top_phases_ms_per_frame":{"Driver.Packet":594.797,"Driver.Packet.dispatch":203.123,"Driver.Packet.draw":172.987,"Driver.Draw":172.572,"Driver.Dispatch":165.716,"Driver.Draw.shader_compile_and_link":123.544,"Shader.DrawStage":119.765,"Shader.DrawStage.capture_resources":107.905},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":false,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":272,"ms":10271.213},"interval_start_s":128.054,"interval_end_s":138.326,"presents":22,"frame_ms":{"p50":322.137,"p90":714.764,"p99":2029.634,"max":2029.634},"gpu_busy_ms_per_present":239.744,"worker_busy_pct":{"queue worker 0x0":99.599,"queue worker 0x20":84.160},"top_phases_ms_per_frame":{"Driver.Packet":854.931,"Driver.Packet.dispatch":256.277,"Driver.Packet.draw":252.029,"Driver.Draw":251.606,"Driver.Dispatch":215.891,"Driver.Packet.memory_wait":185.896,"Driver.Draw.shader_compile_and_link":155.459,"Shader.DrawStage":151.578},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":false,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":294,"ms":10227.457},"interval_start_s":138.326,"interval_end_s":148.553,"presents":29,"frame_ms":{"p50":324.315,"p90":402.991,"p99":952.994,"max":952.994},"gpu_busy_ms_per_present":311.509,"worker_busy_pct":{"queue worker 0x0":99.498,"queue worker 0x20":80.261},"top_phases_ms_per_frame":{"Driver.Packet":630.443,"Driver.Packet.dispatch":227.232,"Driver.Packet.draw":193.128,"Driver.Draw":192.717,"Driver.Dispatch":190.916,"Driver.Draw.shader_compile_and_link":143.039,"Shader.DrawStage":139.266,"Shader.DrawStage.capture_resources":127.341},"trace_dropped":false,"trace":""}

mesh-1

{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":158,"ms":10183.697},"interval_start_s":98.414,"interval_end_s":108.598,"presents":24,"frame_ms":{"p50":414.613,"p90":465.380,"p99":492.903,"max":492.903},"gpu_busy_ms_per_present":243.381,"worker_busy_pct":{"queue worker 0x0":99.544,"queue worker 0x20":70.336},"top_phases_ms_per_frame":{"Driver.Packet":717.120,"Driver.Packet.dispatch":229.389,"Driver.Packet.draw":203.044,"Driver.Draw":202.580,"Driver.Dispatch":183.940,"Driver.Draw.shader_compile_and_link":134.263,"Shader.DrawStage":130.193,"Driver.Packet.memory_wait":127.053},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":182,"ms":10010.573},"interval_start_s":108.598,"interval_end_s":118.608,"presents":24,"frame_ms":{"p50":415.091,"p90":433.269,"p99":456.517,"max":456.517},"gpu_busy_ms_per_present":242.594,"worker_busy_pct":{"queue worker 0x0":99.574,"queue worker 0x20":69.341},"top_phases_ms_per_frame":{"Driver.Packet":702.726,"Driver.Packet.dispatch":220.210,"Driver.Packet.draw":207.951,"Driver.Draw":207.498,"Driver.Dispatch":172.129,"Driver.Draw.shader_compile_and_link":147.972,"Shader.DrawStage":143.977,"Shader.DrawStage.capture_resources":131.710},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":206,"ms":10391.564},"interval_start_s":118.608,"interval_end_s":129.000,"presents":25,"frame_ms":{"p50":409.266,"p90":436.941,"p99":463.050,"max":463.050},"gpu_busy_ms_per_present":242.726,"worker_busy_pct":{"queue worker 0x0":99.551,"queue worker 0x20":69.535},"top_phases_ms_per_frame":{"Driver.Packet":700.834,"Driver.Packet.dispatch":223.082,"Driver.Packet.draw":205.833,"Driver.Draw":205.379,"Driver.Dispatch":174.403,"Driver.Draw.shader_compile_and_link":143.296,"Shader.DrawStage":139.319,"Shader.DrawStage.capture_resources":127.068},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":231,"ms":10010.716},"interval_start_s":129.000,"interval_end_s":139.011,"presents":24,"frame_ms":{"p50":414.963,"p90":437.545,"p99":451.937,"max":451.937},"gpu_busy_ms_per_present":242.755,"worker_busy_pct":{"queue worker 0x0":99.558,"queue worker 0x20":69.558},"top_phases_ms_per_frame":{"Driver.Packet":703.488,"Driver.Packet.dispatch":224.583,"Driver.Packet.draw":202.465,"Driver.Draw":202.010,"Driver.Dispatch":175.397,"Driver.Draw.shader_compile_and_link":141.532,"Shader.DrawStage":137.472,"Shader.DrawStage.capture_resources":125.309},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":255,"ms":10243.461},"interval_start_s":139.011,"interval_end_s":149.254,"presents":25,"frame_ms":{"p50":410.560,"p90":419.148,"p99":423.570,"max":423.570},"gpu_busy_ms_per_present":242.803,"worker_busy_pct":{"queue worker 0x0":99.528,"queue worker 0x20":69.861},"top_phases_ms_per_frame":{"Driver.Packet":692.295,"Driver.Packet.dispatch":220.776,"Driver.Packet.draw":198.649,"Driver.Draw":198.193,"Driver.Dispatch":176.640,"Driver.Draw.shader_compile_and_link":139.033,"Shader.DrawStage":134.937,"Shader.DrawStage.capture_resources":122.599},"trace_dropped":false,"trace":""}

@eljackjoestar-cmd

Copy link
Copy Markdown
Contributor Author

Raw aps5-summary.jsonl lines of the 90-155 s window, first version of #7891 (srt-2) and with this change (both-1, both-2):

srt-2

{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":171,"ms":10165.210},"interval_start_s":94.075,"interval_end_s":104.240,"presents":31,"frame_ms":{"p50":318.890,"p90":359.604,"p99":439.638,"max":439.638},"gpu_busy_ms_per_present":239.438,"worker_busy_pct":{"queue worker 0x0":99.446,"queue worker 0x20":79.816},"top_phases_ms_per_frame":{"Driver.Packet":586.334,"Driver.Packet.dispatch":197.897,"Driver.Packet.draw":173.588,"Driver.Draw":173.184,"Driver.Dispatch":160.715,"Driver.Draw.draw_and_resource_release":129.954,"Driver.Packet.memory_wait":105.052,"Recorder.WaitSerial":97.598},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":202,"ms":10176.665},"interval_start_s":104.240,"interval_end_s":114.417,"presents":30,"frame_ms":{"p50":327.739,"p90":388.024,"p99":409.439,"max":409.439},"gpu_busy_ms_per_present":239.772,"worker_busy_pct":{"queue worker 0x0":99.453,"queue worker 0x20":78.567},"top_phases_ms_per_frame":{"Driver.Packet":601.913,"Driver.Packet.dispatch":207.989,"Driver.Packet.draw":170.738,"Driver.Draw":170.337,"Driver.Dispatch":169.226,"Driver.Draw.draw_and_resource_release":125.373,"Driver.Packet.memory_wait":106.640,"Recorder.WaitSerial":95.334},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":232,"ms":10232.896},"interval_start_s":114.417,"interval_end_s":124.650,"presents":31,"frame_ms":{"p50":321.831,"p90":355.476,"p99":395.104,"max":395.104},"gpu_busy_ms_per_present":248.553,"worker_busy_pct":{"queue worker 0x0":99.443,"queue worker 0x20":79.054},"top_phases_ms_per_frame":{"Driver.Packet":587.718,"Driver.Packet.dispatch":199.681,"Driver.Packet.draw":171.480,"Driver.Draw":171.080,"Driver.Dispatch":160.592,"Driver.Draw.draw_and_resource_release":127.911,"Driver.Packet.memory_wait":104.881,"Recorder.WaitSerial":99.073},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":263,"ms":10465.700},"interval_start_s":124.650,"interval_end_s":135.115,"presents":29,"frame_ms":{"p50":318.415,"p90":383.992,"p99":1329.885,"max":1329.885},"gpu_busy_ms_per_present":230.544,"worker_busy_pct":{"queue worker 0x0":99.499,"queue worker 0x20":80.697},"top_phases_ms_per_frame":{"Driver.Packet":648.488,"Driver.Packet.dispatch":207.307,"Driver.Packet.draw":195.159,"Driver.Draw":194.757,"Driver.Dispatch":169.022,"Driver.Draw.draw_and_resource_release":130.228,"Driver.Packet.memory_wait":122.267,"Recorder.WaitSerial":100.333},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":292,"ms":10058.120},"interval_start_s":135.115,"interval_end_s":145.174,"presents":22,"frame_ms":{"p50":324.341,"p90":724.263,"p99":2012.645,"max":2012.645},"gpu_busy_ms_per_present":333.386,"worker_busy_pct":{"queue worker 0x0":99.598,"queue worker 0x20":82.115},"top_phases_ms_per_frame":{"Driver.Packet":820.853,"Driver.Packet.dispatch":282.150,"Driver.Dispatch":243.492,"Driver.Packet.draw":237.983,"Driver.Draw":237.580,"Driver.Draw.draw_and_resource_release":177.445,"Driver.Packet.memory_wait":155.284,"Recorder.WaitSerial":150.152},"trace_dropped":false,"trace":""}

both-1

{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":186,"ms":10167.926},"interval_start_s":96.956,"interval_end_s":107.124,"presents":34,"frame_ms":{"p50":294.000,"p90":326.705,"p99":354.918,"max":354.918},"gpu_busy_ms_per_present":243.715,"worker_busy_pct":{"queue worker 0x0":99.365,"queue worker 0x20":87.487},"top_phases_ms_per_frame":{"Driver.Packet":557.411,"Driver.Packet.dispatch":197.073,"Driver.Packet.memory_wait":166.083,"Driver.Dispatch":161.009,"Recorder.WaitSerial":99.252,"Driver.Packet.prepare_memory":86.369,"Driver.Packet.draw":74.470,"Driver.Draw":74.040},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":220,"ms":10122.060},"interval_start_s":107.124,"interval_end_s":117.246,"presents":31,"frame_ms":{"p50":316.923,"p90":375.373,"p99":452.156,"max":452.156},"gpu_busy_ms_per_present":249.504,"worker_busy_pct":{"queue worker 0x0":99.422,"queue worker 0x20":84.902},"top_phases_ms_per_frame":{"Driver.Packet":599.835,"Driver.Packet.dispatch":221.500,"Driver.Dispatch":181.796,"Driver.Packet.memory_wait":162.126,"Recorder.WaitSerial":92.551,"Driver.Packet.prepare_memory":88.228,"Driver.Packet.draw":86.045,"Driver.Draw":85.594},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":251,"ms":10235.671},"interval_start_s":117.246,"interval_end_s":127.482,"presents":32,"frame_ms":{"p50":321.392,"p90":356.424,"p99":371.443,"max":371.443},"gpu_busy_ms_per_present":244.971,"worker_busy_pct":{"queue worker 0x0":99.432,"queue worker 0x20":87.269},"top_phases_ms_per_frame":{"Driver.Packet":595.662,"Driver.Packet.dispatch":213.106,"Driver.Dispatch":173.695,"Driver.Packet.memory_wait":170.652,"Recorder.WaitSerial":99.491,"Driver.Packet.prepare_memory":88.449,"Driver.Packet.draw":81.687,"Driver.Draw":81.257},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":283,"ms":10286.827},"interval_start_s":127.482,"interval_end_s":137.768,"presents":20,"frame_ms":{"p50":305.988,"p90":1338.224,"p99":2094.300,"max":2094.300},"gpu_busy_ms_per_present":349.487,"worker_busy_pct":{"queue worker 0x0":99.625,"queue worker 0x20":89.136},"top_phases_ms_per_frame":{"Driver.Packet":966.396,"Driver.Packet.memory_wait":320.808,"Driver.Packet.dispatch":311.530,"Driver.Dispatch":272.334,"Driver.Packet.draw":150.103,"Driver.Draw":149.642,"Driver.Packet.prepare_memory":134.617,"Recorder.WaitSerial":126.230},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":303,"ms":10187.071},"interval_start_s":137.768,"interval_end_s":147.956,"presents":34,"frame_ms":{"p50":299.774,"p90":306.955,"p99":310.686,"max":310.686},"gpu_busy_ms_per_present":244.012,"worker_busy_pct":{"queue worker 0x0":99.405,"queue worker 0x20":84.243},"top_phases_ms_per_frame":{"Driver.Packet":548.639,"Driver.Packet.dispatch":206.204,"Driver.Dispatch":171.506,"Driver.Packet.memory_wait":165.185,"Recorder.WaitSerial":92.035,"Driver.Packet.prepare_memory":75.372,"Driver.Packet.draw":74.253,"Driver.Draw":73.828},"trace_dropped":false,"trace":""}

both-2

{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":188,"ms":10066.957},"interval_start_s":94.924,"interval_end_s":104.991,"presents":33,"frame_ms":{"p50":294.115,"p90":343.950,"p99":378.991,"max":378.991},"gpu_busy_ms_per_present":240.608,"worker_busy_pct":{"queue worker 0x0":99.376,"queue worker 0x20":85.964},"top_phases_ms_per_frame":{"Driver.Packet":563.781,"Driver.Packet.dispatch":197.823,"Driver.Packet.memory_wait":167.471,"Driver.Dispatch":161.273,"Recorder.WaitSerial":95.631,"Driver.Packet.prepare_memory":85.060,"Driver.Packet.draw":78.051,"Driver.Draw":77.623},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":221,"ms":10052.331},"interval_start_s":104.991,"interval_end_s":115.043,"presents":32,"frame_ms":{"p50":306.471,"p90":353.728,"p99":400.881,"max":400.881},"gpu_busy_ms_per_present":242.282,"worker_busy_pct":{"queue worker 0x0":99.410,"queue worker 0x20":85.335},"top_phases_ms_per_frame":{"Driver.Packet":578.445,"Driver.Packet.dispatch":205.845,"Driver.Dispatch":168.533,"Driver.Packet.memory_wait":163.547,"Recorder.WaitSerial":95.208,"Driver.Packet.prepare_memory":85.222,"Driver.Packet.draw":82.070,"Driver.Draw":81.645},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":253,"ms":10140.293},"interval_start_s":115.043,"interval_end_s":125.183,"presents":34,"frame_ms":{"p50":293.469,"p90":322.416,"p99":345.655,"max":345.655},"gpu_busy_ms_per_present":241.119,"worker_busy_pct":{"queue worker 0x0":99.388,"queue worker 0x20":87.659},"top_phases_ms_per_frame":{"Driver.Packet":556.323,"Driver.Packet.dispatch":195.968,"Driver.Packet.memory_wait":169.226,"Driver.Dispatch":159.837,"Recorder.WaitSerial":96.724,"Driver.Packet.prepare_memory":84.705,"Driver.Packet.draw":72.979,"Driver.Draw":72.564},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":287,"ms":10032.948},"interval_start_s":125.183,"interval_end_s":135.216,"presents":19,"frame_ms":{"p50":320.643,"p90":1349.415,"p99":2016.644,"max":2016.644},"gpu_busy_ms_per_present":351.405,"worker_busy_pct":{"queue worker 0x0":99.650,"queue worker 0x20":89.298},"top_phases_ms_per_frame":{"Driver.Packet":992.802,"Driver.Packet.dispatch":334.308,"Driver.Packet.memory_wait":324.068,"Driver.Dispatch":292.742,"Driver.Packet.draw":147.983,"Driver.Draw":147.548,"Driver.Packet.prepare_memory":133.525,"Recorder.WaitSerial":128.467},"trace_dropped":false,"trace":""}
{"commit":"b3d5d03d6d13","dirty":true,"env":{"APS5_LAZY_SHADER_PREPARE":"1","APS5_NO_PAD_INPUT":"1","APS5_TRACE_DIR":"<path>","APS5_TRACE_SUMMARY_EVERY":"10"},"gpu":"NVIDIA GeForce RTX 5070","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"summary_every 10","first_present":306,"ms":10130.751},"interval_start_s":135.216,"interval_end_s":145.347,"presents":34,"frame_ms":{"p50":298.587,"p90":304.390,"p99":312.438,"max":312.438},"gpu_busy_ms_per_present":242.007,"worker_busy_pct":{"queue worker 0x0":99.388,"queue worker 0x20":84.425},"top_phases_ms_per_frame":{"Driver.Packet":546.351,"Driver.Packet.dispatch":204.939,"Driver.Dispatch":170.598,"Driver.Packet.memory_wait":159.677,"Recorder.WaitSerial":89.195,"Driver.Packet.prepare_memory":76.584,"Driver.Packet.draw":75.604,"Driver.Draw":75.194},"trace_dropped":false,"trace":""}

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 8564 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp L215-216

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 1191 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 1368 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 4040 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 4072 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 5431 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 5441 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 5499 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 5609 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 5925 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6146 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6185 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6186 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6188 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6194 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6202 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6235 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6280 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6292 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6481 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6539 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6548 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6615 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6636 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6682 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6683 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6718 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6804 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6808 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6820 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6946 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6947 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6970 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7085 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7642 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 7888 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp

@github-actions github-actions Bot added the agc libSceAgc* label Oct 19, 2026
@adriadam10 adriadam10 self-assigned this Oct 19, 2026

@adriadam10 adriadam10 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The change reads correctly (indexed flag in the push word, first index 0 for an auto draw, the three new meshArgumentTests rows), but it should not land as is:

  • Alone it is slower on your own scene: 2.40 vs 2.77 FPS (mesh-1 vs ctl-1/2, frame p50 415 ms vs 325 ms). It depends on #7891, which is still open and under review, so merging this first ships a regression. Please keep it until #7891 is merged, then rebase and re-measure with the final rule of #7891 (no temporary switch).
  • With #7891 the gain is 2.85 → 2.99 FPS, about the spread between your repeated runs (ctl 2.76/2.78, srt 2.89/2.80). Two runs per configuration on the final stack, and the Driver.Packet.draw figure (it halves), would show it is real.
  • No test covers that an auto mesh draw is classified GPU-side (ClassifyIndirectDraw with no index buffer) or that MeshArguments.comp honours indexed == 0; the new rows only test ResolveMeshArguments. The claim that the start vertex reaches the shader through vertexConstant is not pinned either. An execution test with an auto draw whose record has a non-zero start vertex would cover both.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* perf numbers missing perf pull request without a before and after summary line perf Performance change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants