summaryrefslogtreecommitdiff
path: root/src/nv_exa.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nv_exa.c')
-rw-r--r--src/nv_exa.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/nv_exa.c b/src/nv_exa.c
index 4ce44ce..6380971 100644
--- a/src/nv_exa.c
+++ b/src/nv_exa.c
@@ -608,13 +608,23 @@ Bool NVExaInit(ScreenPtr pScreen)
pNv->EXADriverPtr->DownloadFromScreen = NVDownloadFromScreen;
pNv->EXADriverPtr->UploadToScreen = NVUploadToScreen;
- pNv->EXADriverPtr->PrepareCopy = NVExaPrepareCopy;
- pNv->EXADriverPtr->Copy = NVExaCopy;
- pNv->EXADriverPtr->DoneCopy = NVExaDoneCopy;
+ if (pNv->Architecture < NV_ARCH_50) {
+ pNv->EXADriverPtr->PrepareCopy = NVExaPrepareCopy;
+ pNv->EXADriverPtr->Copy = NVExaCopy;
+ pNv->EXADriverPtr->DoneCopy = NVExaDoneCopy;
+
+ pNv->EXADriverPtr->PrepareSolid = NVExaPrepareSolid;
+ pNv->EXADriverPtr->Solid = NVExaSolid;
+ pNv->EXADriverPtr->DoneSolid = NVExaDoneSolid;
+ } else {
+ pNv->EXADriverPtr->PrepareCopy = NV50EXAPrepareCopy;
+ pNv->EXADriverPtr->Copy = NV50EXACopy;
+ pNv->EXADriverPtr->DoneCopy = NV50EXADoneCopy;
- pNv->EXADriverPtr->PrepareSolid = NVExaPrepareSolid;
- pNv->EXADriverPtr->Solid = NVExaSolid;
- pNv->EXADriverPtr->DoneSolid = NVExaDoneSolid;
+ pNv->EXADriverPtr->PrepareSolid = NV50EXAPrepareSolid;
+ pNv->EXADriverPtr->Solid = NV50EXASolid;
+ pNv->EXADriverPtr->DoneSolid = NV50EXADoneSolid;
+ }
switch (pNv->Architecture) {
case NV_ARCH_40:
@@ -623,6 +633,8 @@ Bool NVExaInit(ScreenPtr pScreen)
pNv->EXADriverPtr->Composite = NV30EXAComposite;
pNv->EXADriverPtr->DoneComposite = NV30EXADoneComposite;
break;
+ case NV_ARCH_50:
+ break;
default:
if (!pNv->BlendingPossible)
break;