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