Hello.

I was investigating on how to allow both 2D and 3D acceleration in the 
Mach64. So I'm a little confused:

First of all, I looked at the R128 and RADEON drivers and they are only doing 
a DRILock/DRIUnlock in the LeaveVT and EnterVT functions. Does this mean that 
those cards can do 3D and 2D operation at the same time? Then I looked a 
little in the mga 2D driver and a few more locking operations are showed. 
After this, I'm not sure about what we must interlock between 2D and 3D 
operation.

I would like to know what do you think about the following assumptions:
1.-The proper function to lock 3D operation from XFree is DRILock.

2.-We must lock all the operations in the 2D driver that tries:
        Mach64WaitForIdle
        Mach64WaitForFIFO
   to guarantee that the reached FIFO condition is true.

  This investigation shows me another funny thing:
        When the 2D Xfree driver only has to make one register write, it doesn't try 
a Mach64WaitForFIFO. Is this correct? If the DRI driver was writing on the 
command FIFO, couldn't the 2D attempt to write on the FIFO fail ? On the 
other hand, when there are more than one register write, say N-register 
writes, the 2D driver makes a Mach64WaitForFIFO(N) before trying to write to 
the registers.


Is there any other 2D operation that we should need to lock? What criteria 
must I follow to make this the right way? I suppose that I don't need to lock 
any register write, but I'm not sure, because the FIFO could get full while 
I'm writing from the 2D driver. 

I will keep looking to the other drivers, but I would like to have others 
opinions.

On the MESA side, it looks that the hardware locking is already implemented 
through the functions LOCK_HARDWARE and UNLOCK_HARDWARE. 


Best regards.

--
Manuel Teira



_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to