[Intel-gfx] Proposal of the z-order patch

Yu Dai yu.dai at intel.com
Thu Mar 20 19:53:07 CET 2014


All,

Thanks for the review of z-order patch. Based on that, we had some 
internal discussion within our Display driver team. Here is the summary.

1. Re: define plane z-order combinations as an enum property

User mode needs extra work to understand the definition. The number of 
combinations expands dramatically with the increasing of planes. Says 
for 4 planes, the total combo is 24.

2. Re: per-plane z-order property

We prefer the atomic setup of z-order for all planes. So driver can 
validate the property value in the SetProperty call. Otherwise, if for 
each plane the separated SetProperty call is made to update the z-order, 
it could be difficult to handle and validate. For example, when set a 
plane to zorder 2, there might be another plane with zorder 2 already. 
In the end, we still need another check point to validate this.

3. We also discussed the possibility of using blob property

Some generic blob property calls are needed to handle a property with a 
list of plane id and zorder etc. But currently it is lack of support in 
libdrm to pass down user data via blob property. The current 
drm_mode_obj_set_property really doesn't handle blob. It might be useful 
to implement a property that can handle complicated data structure from 
user. But this is long term goal.

The new proposal we have is still based on previous solution (64bits 
property) but it tries to make the code platform agnostic and eliminate 
the magic number like PASASBCA.

Define the supported plane name tag in i915_drm.h. For i915, it might be
#define DRM_I915_PLANE_PRIMARY    0
#define DRM_I915_PLANE_SPRITE_A   1
#define DRM_I915_PLANE_SPRITE_B   2
#define DRM_I915_PLANE_CURSOR     3

Limits the above setting within 0~15. So we need 4 bits to save it into 
z-order property. The 64bits of z-order will indicate the order of 
planes from bottom (lower bits) to top (higher bits) by every 4 bits. 
Bit 3:0 is the plane at bottom; Bit 7:4 is the one right on top of it 
and so on. In this way, we can support up to 16 planes total. And it is 
very straightforward for user mode to use. The SetProperty call will 
reject any invalid setting. The HW specific code will be wrapped up in 
kernel SetProperty callback. Be note on Intel platform, the 
PLANE_SPRITE_A/B will be mapped to HW Sprite C/D for pipe 2. And this is 
crtc property - we don't have to pass around pipe id.

Please let us know your opinion on this.

Thanks,

Alex
GCM Core uArch, Intel VGP




More information about the Intel-gfx mailing list