@@ -7231,10 +7231,9 @@ static bool dml_core_mode_support(struct dml2_core_calcs_mode_support_ex *in_out
7231
7231
/* Cursor Support Check */
7232
7232
mode_lib->ms.support.CursorSupport = true;
7233
7233
for (k = 0; k < mode_lib->ms.num_active_planes; k++) {
7234
- if (display_cfg->plane_descriptors[k].cursor.cursor_width > 0. 0) {
7235
- if (display_cfg->plane_descriptors[k].cursor.cursor_bpp == 64 && mode_lib->ip.cursor_64bpp_support == false) {
7234
+ if (display_cfg->plane_descriptors[k].cursor.num_cursors > 0) {
7235
+ if (display_cfg->plane_descriptors[k].cursor.cursor_bpp == 64 && mode_lib->ip.cursor_64bpp_support == false)
7236
7236
mode_lib->ms.support.CursorSupport = false;
7237
- }
7238
7237
}
7239
7238
}
7240
7239
@@ -8091,27 +8090,31 @@ static bool dml_core_mode_support(struct dml2_core_calcs_mode_support_ex *in_out
8091
8090
for (k = 0; k < mode_lib->ms.num_active_planes; ++k) {
8092
8091
double line_time_us = (double)display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.h_total / ((double)display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.pixel_clock_khz / 1000);
8093
8092
bool cursor_not_enough_urgent_latency_hiding = 0;
8094
- calculate_cursor_req_attributes(
8095
- display_cfg->plane_descriptors[k].cursor.cursor_width,
8096
- display_cfg->plane_descriptors[k].cursor.cursor_bpp,
8097
8093
8098
- // output
8099
- &s->cursor_lines_per_chunk[k],
8100
- &s->cursor_bytes_per_line[k],
8101
- &s->cursor_bytes_per_chunk[k],
8102
- &s->cursor_bytes[k]);
8103
-
8104
- calculate_cursor_urgent_burst_factor(
8105
- mode_lib->ip.cursor_buffer_size,
8106
- display_cfg->plane_descriptors[k].cursor.cursor_width,
8107
- s->cursor_bytes_per_chunk[k],
8108
- s->cursor_lines_per_chunk[k],
8109
- line_time_us,
8110
- mode_lib->ms.UrgLatency,
8094
+ if (display_cfg->plane_descriptors[k].cursor.num_cursors > 0) {
8095
+ calculate_cursor_req_attributes(
8096
+ display_cfg->plane_descriptors[k].cursor.cursor_width,
8097
+ display_cfg->plane_descriptors[k].cursor.cursor_bpp,
8098
+
8099
+ // output
8100
+ &s->cursor_lines_per_chunk[k],
8101
+ &s->cursor_bytes_per_line[k],
8102
+ &s->cursor_bytes_per_chunk[k],
8103
+ &s->cursor_bytes[k]);
8104
+
8105
+ calculate_cursor_urgent_burst_factor(
8106
+ mode_lib->ip.cursor_buffer_size,
8107
+ display_cfg->plane_descriptors[k].cursor.cursor_width,
8108
+ s->cursor_bytes_per_chunk[k],
8109
+ s->cursor_lines_per_chunk[k],
8110
+ line_time_us,
8111
+ mode_lib->ms.UrgLatency,
8112
+
8113
+ // output
8114
+ &mode_lib->ms.UrgentBurstFactorCursor[k],
8115
+ &cursor_not_enough_urgent_latency_hiding);
8116
+ }
8111
8117
8112
- // output
8113
- &mode_lib->ms.UrgentBurstFactorCursor[k],
8114
- &cursor_not_enough_urgent_latency_hiding);
8115
8118
mode_lib->ms.UrgentBurstFactorCursorPre[k] = mode_lib->ms.UrgentBurstFactorCursor[k];
8116
8119
8117
8120
#ifdef __DML_VBA_DEBUG__
@@ -10592,31 +10595,33 @@ static bool dml_core_mode_programming(struct dml2_core_calcs_mode_programming_ex
10592
10595
10593
10596
for (k = 0; k < s->num_active_planes; ++k) {
10594
10597
bool cursor_not_enough_urgent_latency_hiding = 0;
10595
- double line_time_us;
10598
+ double line_time_us = 0.0 ;
10596
10599
10597
- calculate_cursor_req_attributes(
10598
- display_cfg->plane_descriptors[k].cursor.cursor_width,
10599
- display_cfg->plane_descriptors[k].cursor.cursor_bpp,
10600
+ line_time_us = display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.h_total /
10601
+ ((double)display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.pixel_clock_khz / 1000);
10602
+ if (display_cfg->plane_descriptors[k].cursor.num_cursors > 0) {
10603
+ calculate_cursor_req_attributes(
10604
+ display_cfg->plane_descriptors[k].cursor.cursor_width,
10605
+ display_cfg->plane_descriptors[k].cursor.cursor_bpp,
10600
10606
10601
- // output
10602
- &s->cursor_lines_per_chunk[k],
10603
- &s->cursor_bytes_per_line[k],
10604
- &s->cursor_bytes_per_chunk[k],
10605
- &s->cursor_bytes[k]);
10606
-
10607
- line_time_us = display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.h_total / ((double)display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.pixel_clock_khz / 1000);
10608
-
10609
- calculate_cursor_urgent_burst_factor(
10610
- mode_lib->ip.cursor_buffer_size,
10611
- display_cfg->plane_descriptors[k].cursor.cursor_width,
10612
- s->cursor_bytes_per_chunk[k],
10613
- s->cursor_lines_per_chunk[k],
10614
- line_time_us,
10615
- mode_lib->mp.UrgentLatency,
10607
+ // output
10608
+ &s->cursor_lines_per_chunk[k],
10609
+ &s->cursor_bytes_per_line[k],
10610
+ &s->cursor_bytes_per_chunk[k],
10611
+ &s->cursor_bytes[k]);
10612
+
10613
+ calculate_cursor_urgent_burst_factor(
10614
+ mode_lib->ip.cursor_buffer_size,
10615
+ display_cfg->plane_descriptors[k].cursor.cursor_width,
10616
+ s->cursor_bytes_per_chunk[k],
10617
+ s->cursor_lines_per_chunk[k],
10618
+ line_time_us,
10619
+ mode_lib->mp.UrgentLatency,
10616
10620
10617
- // output
10618
- &mode_lib->mp.UrgentBurstFactorCursor[k],
10619
- &cursor_not_enough_urgent_latency_hiding);
10621
+ // output
10622
+ &mode_lib->mp.UrgentBurstFactorCursor[k],
10623
+ &cursor_not_enough_urgent_latency_hiding);
10624
+ }
10620
10625
mode_lib->mp.UrgentBurstFactorCursorPre[k] = mode_lib->mp.UrgentBurstFactorCursor[k];
10621
10626
10622
10627
CalculateUrgentBurstFactor(
0 commit comments