mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
r300: Page flipping fixes.
Mostly making sure the page flipping state is respected when necessary.
This commit is contained in:
parent
cbf280dc26
commit
c409dbcae3
5 changed files with 8 additions and 3 deletions
|
|
@ -370,7 +370,7 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask)
|
|||
_swrast_Clear(ctx, mask);
|
||||
}
|
||||
|
||||
swapped = r300->radeon.doPageFlip && (r300->radeon.sarea->pfCurrentPage == 1);
|
||||
swapped = r300->radeon.sarea->pfCurrentPage == 1;
|
||||
|
||||
/* Make sure it fits there. */
|
||||
r300EnsureCmdBufSpace(r300, 421*3, __FUNCTION__);
|
||||
|
|
|
|||
|
|
@ -293,6 +293,8 @@ GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv,
|
|||
driverPrivate);
|
||||
|
||||
_mesa_update_state(radeon->glCtx);
|
||||
|
||||
radeonUpdatePageFlipping(radeon);
|
||||
} else {
|
||||
if (RADEON_DEBUG & DEBUG_DRI)
|
||||
fprintf(stderr, "%s ctx is null\n", __FUNCTION__);
|
||||
|
|
|
|||
|
|
@ -50,13 +50,14 @@ int prevLockLine = 0;
|
|||
|
||||
/* Turn on/off page flipping according to the flags in the sarea:
|
||||
*/
|
||||
static void radeonUpdatePageFlipping(radeonContextPtr radeon)
|
||||
void radeonUpdatePageFlipping(radeonContextPtr radeon)
|
||||
{
|
||||
int use_back;
|
||||
|
||||
radeon->doPageFlip = radeon->sarea->pfState;
|
||||
if (radeon->glCtx->WinSysDrawBuffer) {
|
||||
driFlipRenderbuffers(radeon->glCtx->WinSysDrawBuffer, radeon->sarea->pfCurrentPage);
|
||||
r300UpdateDrawBuffer(radeon->glCtx);
|
||||
}
|
||||
|
||||
use_back = (radeon->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include "radeon_context.h"
|
||||
|
||||
extern void radeonGetLock(radeonContextPtr radeon, GLuint flags);
|
||||
extern void radeonUpdatePageFlipping(radeonContextPtr radeon);
|
||||
|
||||
/* Turn DEBUG_LOCKING on to find locking conflicts.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -154,7 +154,8 @@ void radeonSetCliprects(radeonContextPtr radeon)
|
|||
|
||||
if (draw_fb->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT) {
|
||||
/* Can't ignore 2d windows if we are page flipping. */
|
||||
if (drawable->numBackClipRects == 0 || radeon->doPageFlip) {
|
||||
if (drawable->numBackClipRects == 0 || radeon->doPageFlip ||
|
||||
radeon->sarea->pfCurrentPage == 1) {
|
||||
radeon->numClipRects = drawable->numClipRects;
|
||||
radeon->pClipRects = drawable->pClipRects;
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue