Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/i915/xe3: do not configure auto min dbuf for cursor WMs

Cursor planes do not have the minimum dbuf configuration. The
ddb allocation and registration routines handle this correctly.
But the plane wm handling for cursor need to be differentiated
for this case. Auto minimum buf enable bit should not be
enabled for cursor wm registers in xe3.

Fixes: a831920c370c ("drm/i915/xe3: Use hw support for min/interim ddb allocations for async flip")
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241213120357.300584-1-vinod.govindapillai@intel.com
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

+5 -5
+5 -5
drivers/gpu/drm/i915/display/skl_watermark.c
··· 1922 1922 return 31; 1923 1923 } 1924 1924 1925 - static bool xe3_auto_min_alloc_capable(struct intel_display *display, 1926 - int level) 1925 + static bool xe3_auto_min_alloc_capable(struct intel_plane *plane, int level) 1927 1926 { 1928 - return DISPLAY_VER(display) >= 30 && level == 0; 1927 + struct intel_display *display = to_intel_display(plane); 1928 + 1929 + return DISPLAY_VER(display) >= 30 && level == 0 && plane->id != PLANE_CURSOR; 1929 1930 } 1930 1931 1931 1932 static void skl_compute_plane_wm(const struct intel_crtc_state *crtc_state, ··· 1938 1937 struct skl_wm_level *result /* out */) 1939 1938 { 1940 1939 struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); 1941 - struct intel_display *display = to_intel_display(crtc_state); 1942 1940 uint_fixed_16_16_t method1, method2; 1943 1941 uint_fixed_16_16_t selected_result; 1944 1942 u32 blocks, lines, min_ddb_alloc = 0; ··· 2061 2061 /* Bspec says: value >= plane ddb allocation -> invalid, hence the +1 here */ 2062 2062 result->min_ddb_alloc = max(min_ddb_alloc, blocks) + 1; 2063 2063 result->enable = true; 2064 - result->auto_min_alloc_wm_enable = xe3_auto_min_alloc_capable(display, level); 2064 + result->auto_min_alloc_wm_enable = xe3_auto_min_alloc_capable(plane, level); 2065 2065 2066 2066 if (DISPLAY_VER(i915) < 12 && i915->display.sagv.block_time_us) 2067 2067 result->can_sagv = latency >= i915->display.sagv.block_time_us;