10
10
11
11
use crate :: gpu:: d3d11:: shaders:: { BOUND_WORKGROUP_SIZE , DICE_WORKGROUP_SIZE } ;
12
12
use crate :: gpu:: d3d11:: shaders:: { PROPAGATE_WORKGROUP_SIZE , ProgramsD3D11 , SORT_WORKGROUP_SIZE } ;
13
- use crate :: gpu:: perf:: TimerFuture ;
13
+ use crate :: gpu:: perf:: TimeCategory ;
14
14
use crate :: gpu:: renderer:: { FramebufferFlags , RendererCore } ;
15
15
use crate :: gpu_data:: { AlphaTileD3D11 , BackdropInfoD3D11 , DiceMetadataD3D11 , DrawTileBatchD3D11 } ;
16
16
use crate :: gpu_data:: { Fill , FirstTileD3D11 , MicrolineD3D11 , PathSource , PropagateMetadataD3D11 } ;
@@ -78,8 +78,8 @@ impl<D> RendererD3D11<D> where D: Device {
78
78
79
79
let tiles_buffer = core. allocator . get_buffer ( tiles_d3d11_buffer_id) ;
80
80
81
- let timer_query = core. timer_query_cache . alloc ( & core. device ) ;
82
- core. device . begin_timer_query ( & timer_query ) ;
81
+ let timer_query = core. timer_query_cache . start_timing_draw_call ( & core. device ,
82
+ & core. options ) ;
83
83
84
84
let compute_dimensions = ComputeDimensions {
85
85
x : ( tile_count + BOUND_WORKGROUP_SIZE - 1 ) / BOUND_WORKGROUP_SIZE ,
@@ -100,9 +100,9 @@ impl<D> RendererD3D11<D> where D: Device {
100
100
] ,
101
101
} ) ;
102
102
103
- core. device . end_timer_query ( & timer_query) ;
104
- core. current_timer . as_mut ( ) . unwrap ( ) . other_times . push ( TimerFuture :: new ( timer_query) ) ;
105
103
core. stats . drawcall_count += 1 ;
104
+ core. finish_timing_draw_call ( & timer_query) ;
105
+ core. current_timer . as_mut ( ) . unwrap ( ) . push_query ( TimeCategory :: Other , timer_query) ;
106
106
107
107
core. allocator . free_buffer ( path_info_buffer_id) ;
108
108
}
@@ -174,8 +174,8 @@ impl<D> RendererD3D11<D> where D: Device {
174
174
& indirect_draw_params,
175
175
BufferTarget :: Storage ) ;
176
176
177
- let timer_query = core. timer_query_cache . alloc ( & core. device ) ;
178
- core. device . begin_timer_query ( & timer_query ) ;
177
+ let timer_query = core. timer_query_cache . start_timing_draw_call ( & core. device ,
178
+ & core. options ) ;
179
179
180
180
let compute_dimensions = ComputeDimensions {
181
181
x : ( microlines_storage. count + 63 ) / 64 ,
@@ -204,9 +204,9 @@ impl<D> RendererD3D11<D> where D: Device {
204
204
] ,
205
205
} ) ;
206
206
207
- core. device . end_timer_query ( & timer_query) ;
208
- core. current_timer . as_mut ( ) . unwrap ( ) . bin_times . push ( TimerFuture :: new ( timer_query) ) ;
209
207
core. stats . drawcall_count += 1 ;
208
+ core. finish_timing_draw_call ( & timer_query) ;
209
+ core. current_timer . as_mut ( ) . unwrap ( ) . push_query ( TimeCategory :: Bin , timer_query) ;
210
210
211
211
let indirect_draw_params_receiver =
212
212
core. device . read_buffer ( fill_indirect_draw_params_buffer,
@@ -294,8 +294,8 @@ impl<D> RendererD3D11<D> where D: Device {
294
294
dice_metadata,
295
295
BufferTarget :: Storage ) ;
296
296
297
- let timer_query = core. timer_query_cache . alloc ( & core. device ) ;
298
- core. device . begin_timer_query ( & timer_query ) ;
297
+ let timer_query = core. timer_query_cache . start_timing_draw_call ( & core. device ,
298
+ & core. options ) ;
299
299
300
300
let workgroup_count = ( batch_segment_count + DICE_WORKGROUP_SIZE - 1 ) /
301
301
DICE_WORKGROUP_SIZE ;
@@ -325,9 +325,9 @@ impl<D> RendererD3D11<D> where D: Device {
325
325
] ,
326
326
} ) ;
327
327
328
- core. device . end_timer_query ( & timer_query) ;
329
- core. current_timer . as_mut ( ) . unwrap ( ) . dice_times . push ( TimerFuture :: new ( timer_query) ) ;
330
328
core. stats . drawcall_count += 1 ;
329
+ core. finish_timing_draw_call ( & timer_query) ;
330
+ core. current_timer . as_mut ( ) . unwrap ( ) . push_query ( TimeCategory :: Dice , timer_query) ;
331
331
332
332
let indirect_compute_params_receiver =
333
333
core. device . read_buffer ( & dice_indirect_draw_params_buffer,
@@ -374,8 +374,8 @@ impl<D> RendererD3D11<D> where D: Device {
374
374
375
375
let area_lut_texture = core. allocator . get_texture ( core. area_lut_texture_id ) ;
376
376
377
- let timer_query = core. timer_query_cache . alloc ( & core. device ) ;
378
- core. device . begin_timer_query ( & timer_query ) ;
377
+ let timer_query = core. timer_query_cache . start_timing_draw_call ( & core. device ,
378
+ & core. options ) ;
379
379
380
380
// This setup is an annoying workaround for the 64K limit of compute invocation in OpenGL.
381
381
let alpha_tile_count = alpha_tile_range. end - alpha_tile_range. start ;
@@ -401,9 +401,9 @@ impl<D> RendererD3D11<D> where D: Device {
401
401
] ,
402
402
} ) ;
403
403
404
- core. device . end_timer_query ( & timer_query) ;
405
- core. current_timer . as_mut ( ) . unwrap ( ) . fill_times . push ( TimerFuture :: new ( timer_query) ) ;
406
404
core. stats . drawcall_count += 1 ;
405
+ core. finish_timing_draw_call ( & timer_query) ;
406
+ core. current_timer . as_mut ( ) . unwrap ( ) . push_query ( TimeCategory :: Fill , timer_query) ;
407
407
408
408
core. framebuffer_flags . insert ( FramebufferFlags :: MASK_FRAMEBUFFER_IS_DIRTY ) ;
409
409
}
@@ -596,8 +596,8 @@ impl<D> RendererD3D11<D> where D: Device {
596
596
storage_buffers. push ( ( & propagate_program. clip_tiles_storage_buffer , clip_tile_buffer) ) ;
597
597
}
598
598
599
- let timer_query = core. timer_query_cache . alloc ( & core. device ) ;
600
- core. device . begin_timer_query ( & timer_query ) ;
599
+ let timer_query = core. timer_query_cache . start_timing_draw_call ( & core. device ,
600
+ & core. options ) ;
601
601
602
602
let dimensions = ComputeDimensions {
603
603
x : ( column_count + PROPAGATE_WORKGROUP_SIZE - 1 ) / PROPAGATE_WORKGROUP_SIZE ,
@@ -618,9 +618,9 @@ impl<D> RendererD3D11<D> where D: Device {
618
618
storage_buffers : & storage_buffers,
619
619
} ) ;
620
620
621
- core. device . end_timer_query ( & timer_query) ;
622
- core. current_timer . as_mut ( ) . unwrap ( ) . other_times . push ( TimerFuture :: new ( timer_query) ) ;
623
621
core. stats . drawcall_count += 1 ;
622
+ core. finish_timing_draw_call ( & timer_query) ;
623
+ core. current_timer . as_mut ( ) . unwrap ( ) . push_query ( TimeCategory :: Other , timer_query) ;
624
624
625
625
let fill_indirect_draw_params_receiver =
626
626
core. device . read_buffer ( & fill_indirect_draw_params_buffer,
@@ -654,8 +654,8 @@ impl<D> RendererD3D11<D> where D: Device {
654
654
655
655
let tile_count = core. framebuffer_tile_size ( ) . area ( ) ;
656
656
657
- let timer_query = core. timer_query_cache . alloc ( & core. device ) ;
658
- core. device . begin_timer_query ( & timer_query ) ;
657
+ let timer_query = core. timer_query_cache . start_timing_draw_call ( & core. device ,
658
+ & core. options ) ;
659
659
660
660
let dimensions = ComputeDimensions {
661
661
x : ( tile_count as u32 + SORT_WORKGROUP_SIZE - 1 ) / SORT_WORKGROUP_SIZE ,
@@ -674,9 +674,9 @@ impl<D> RendererD3D11<D> where D: Device {
674
674
] ,
675
675
} ) ;
676
676
677
- core. device . end_timer_query ( & timer_query) ;
678
- core. current_timer . as_mut ( ) . unwrap ( ) . other_times . push ( TimerFuture :: new ( timer_query) ) ;
679
677
core. stats . drawcall_count += 1 ;
678
+ core. finish_timing_draw_call ( & timer_query) ;
679
+ core. current_timer . as_mut ( ) . unwrap ( ) . push_query ( TimeCategory :: Other , timer_query) ;
680
680
}
681
681
682
682
fn allocate_first_tile_map ( & mut self , core : & mut RendererCore < D > ) -> BufferID {
@@ -703,8 +703,8 @@ impl<D> RendererD3D11<D> where D: Device {
703
703
tiles_d3d11_buffer_id : BufferID ,
704
704
first_tile_map_buffer_id : BufferID ,
705
705
color_texture_0 : Option < TileBatchTexture > ) {
706
- let timer_query = core. timer_query_cache . alloc ( & core. device ) ;
707
- core. device . begin_timer_query ( & timer_query ) ;
706
+ let timer_query = core. timer_query_cache . start_timing_draw_call ( & core. device ,
707
+ & core. options ) ;
708
708
709
709
let tile_program = & self . programs . tile_program ;
710
710
@@ -763,9 +763,9 @@ impl<D> RendererD3D11<D> where D: Device {
763
763
uniforms : & uniforms,
764
764
} ) ;
765
765
766
- core. device . end_timer_query ( & timer_query) ;
767
- core. current_timer . as_mut ( ) . unwrap ( ) . composite_times . push ( TimerFuture :: new ( timer_query) ) ;
768
766
core. stats . drawcall_count += 1 ;
767
+ core. finish_timing_draw_call ( & timer_query) ;
768
+ core. current_timer . as_mut ( ) . unwrap ( ) . push_query ( TimeCategory :: Composite , timer_query) ;
769
769
770
770
core. preserve_draw_framebuffer ( ) ;
771
771
}
0 commit comments