| author | Ben Skeggs <skeggsb@gmail.com> | 2007-11-01 07:17:20 (GMT) |
|---|---|---|
| committer | Ben Skeggs <skeggsb@gmail.com> | 2007-11-01 07:18:15 (GMT) |
| commit | f59e596bcd90ef824cd41e0c37952e574d6914bb (patch) | |
| tree | d65da65552bc0f01e87b2ae2fe254b5b8d02fc7e | |
| parent | 59c4fdb650ff2e6b6948d1bdd6bb22aa94195a32 (diff) | |
| download | xf86-video-nouveau-f59e596bcd90ef824cd41e0c37952e574d6914bb.zip xf86-video-nouveau-f59e596bcd90ef824cd41e0c37952e574d6914bb.tar.gz xf86-video-nouveau-f59e596bcd90ef824cd41e0c37952e574d6914bb.tar.bz2 | |
nv40: completely untested fix for composite on ppc
Thanks go to ps3rsx guys for finding the issue.
| -rw-r--r-- | src/nv40_exa.c | 13 | ||||
| -rw-r--r-- | src/nv_exa.c | 2 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/nv40_exa.c b/src/nv40_exa.c index 6aa783b..a9c88c0 100644 --- a/src/nv40_exa.c +++ b/src/nv40_exa.c @@ -246,9 +246,16 @@ NV40_LoadFragProg(ScrnInfoPtr pScrn, nv_shader_t *shader) } if (!shader->hw_id) { - memcpy(fp_mem->map + next_hw_id_offset, shader->data, - shader->size * - sizeof(uint32_t)); + uint32_t *map = fp_mem->map; + int i; + + for (i = 0; i < shader->size; i++) { + uint32_t data = shader->data[i]; +#if (X_BYTE_ORDER != X_LITTLE_ENDIAN) + data = ((data >> 16) | ((data & 0xffff) << 16)); +#endif + map[i] = data; + } shader->hw_id = fp_mem->offset; shader->hw_id += next_hw_id_offset; diff --git a/src/nv_exa.c b/src/nv_exa.c index 482bca3..1605878 100644 --- a/src/nv_exa.c +++ b/src/nv_exa.c @@ -698,13 +698,13 @@ NVExaInit(ScreenPtr pScreen) pNv->EXADriverPtr->Composite = NV30EXAComposite; pNv->EXADriverPtr->DoneComposite = NV30EXADoneComposite; break; +#endif case NV_ARCH_40: pNv->EXADriverPtr->CheckComposite = NV40EXACheckComposite; pNv->EXADriverPtr->PrepareComposite = NV40EXAPrepareComposite; pNv->EXADriverPtr->Composite = NV40EXAComposite; pNv->EXADriverPtr->DoneComposite = NV40EXADoneComposite; break; -#endif case NV_ARCH_50: break; default: |
