KMS cursor BO semantics

Thomas Hellstrom thellstrom at vmware.com
Fri Nov 4 15:30:06 PDT 2011


On 11/04/2011 04:34 PM, Daniel Vetter wrote:
> On Fri, Nov 04, 2011 at 12:59:59PM +0100, Thomas Hellstrom wrote:
>    
>> Hi.
>>
>> I have a question about the semantics of the DRM_IOCTL_MODE_CURSOR iotcl:
>>
>> Some hardware (vmware's virtual in particular) may not be able to
>> pick up the changes from a bo directly, since the cursor data is
>> sent though the command stream. Hence we need a notification when
>> the cursor image has changed.
>>
>> Could we *require* that a cursor image change needs to be followed
>> by an ioctl call with the flag
>> DRM_MODE_CURSOR_BO?
>>      
> On i915 we need the cursor in physical memory for some (old) platforms,
> which is seperate storage from the bo backing storage. So we have the same
> problem. We've solved it by intercepting pwrite ioctl calls and demanding
> that userspace only uses these for cursor updates. Is there a special
> reason you can't use such a driver-specific trick?
> -Daniel
>    
We have something similar in use today: We snoop DMAs to hardware
cursor surfaces, but this gets a bit nasty when apps start to do 
hardware render to cursor surfaces, and
we simply ignore that today.

Furthermore,  maps rather than pwrites are the common usage-pattern for 
buffer-backed cursors on vmwgfx, and while it's possible to dirty those 
buffers based on page-faults, like we do with fb surfaces, we'd rather 
avoid having to implement and maintain that.

I'm not sure whether / how you handle the case of hardware render to 
cursor surfaces on i915, but it seems to me like if a lot of drivers 
need to implement driver specific "tricks" to meet the semantics of a 
generic interface, we should perhaps consider specifying those semantics 
in a way that helps avoid driver-specific workarounds?

/Thomas



More information about the dri-devel mailing list