i965: Remove bad constant buffer constant-reg-already-loaded optimization.
[mesa.git] / src / mesa / drivers / dri / s3v / s3v_screen.c
1 /*
2 * Author: Max Lingua <sunmax@libero.it>
3 */
4
5 #include "s3v_context.h"
6 #include "s3v_vb.h"
7 #include "s3v_dri.h"
8
9 s3vScreenPtr s3vCreateScreen( __DRIscreenPrivate *sPriv )
10 {
11 s3vScreenPtr s3vScreen;
12 S3VDRIPtr vDRIPriv = (S3VDRIPtr)sPriv->pDevPriv;
13
14 /* int i; */
15
16 DEBUG(("s3vCreateScreen\n"));
17 DEBUG(("sPriv->pDevPriv at %p\n", sPriv->pDevPriv));
18 DEBUG(("size = %i\n", sizeof(*vDRIPriv)));
19
20 if (sPriv->devPrivSize != sizeof(S3VDRIRec)) {
21 fprintf(stderr,"\nERROR! sizeof(S3VDRIRec) does not match passed size from device driver\n");
22 return GL_FALSE;
23 }
24
25 /* Allocate the private area */
26 s3vScreen = (s3vScreenPtr) CALLOC( sizeof(*s3vScreen) );
27 if ( !s3vScreen ) return NULL;
28
29 s3vScreen->regionCount = 4; /* Magic number. Can we fix this? */
30
31 s3vScreen->regions = _mesa_malloc(s3vScreen->regionCount *
32 sizeof(s3vRegion));
33 DEBUG(("sPriv->fd = %i\nvDRIPriv->dmaBufHandle = %x\n",
34 sPriv->fd, vDRIPriv->dmaBufHandle));
35
36 DEBUG(("vDRIPriv->dmaBufSize=%i\nvDRIPriv->dmaBuf=%p\n",
37 vDRIPriv->dmaBufSize, vDRIPriv->dmaBuf));
38
39
40 /* Get the list of dma buffers */
41 s3vScreen->bufs = drmMapBufs(sPriv->fd);
42
43 if (!s3vScreen->bufs) {
44 DEBUG(("Helter/skelter with drmMapBufs\n"));
45 return GL_FALSE;
46 }
47
48 s3vScreen->textureSize = vDRIPriv->texSize;
49 s3vScreen->logTextureGranularity = vDRIPriv->logTextureGranularity;
50 s3vScreen->cpp = vDRIPriv->cpp;
51 s3vScreen->frontOffset = vDRIPriv->frontOffset;
52 s3vScreen->frontPitch = vDRIPriv->frontPitch;
53 s3vScreen->backOffset = vDRIPriv->backOffset;
54 s3vScreen->backPitch = vDRIPriv->frontPitch; /* FIXME: check */
55 s3vScreen->depthOffset = vDRIPriv->depthOffset;
56 s3vScreen->depthPitch = vDRIPriv->frontPitch;
57 s3vScreen->texOffset = vDRIPriv->texOffset;
58
59 s3vScreen->driScreen = sPriv;
60
61 DEBUG(("vDRIPriv->width =%i; vDRIPriv->deviceID =%x\n", vDRIPriv->width,
62 vDRIPriv->deviceID));
63 DEBUG(("vDRIPriv->mem =%i\n", vDRIPriv->mem));
64 DEBUG(("vDRIPriv->fbOffset =%i\n", vDRIPriv->fbOffset));
65 DEBUG((" ps3vDRI->fbStride =%i\n", vDRIPriv->fbStride));
66 DEBUG(("s3vScreen->cpp = %i\n", s3vScreen->cpp));
67 DEBUG(("s3vScreen->backOffset = %x\n", s3vScreen->backOffset));
68 DEBUG(("s3vScreen->depthOffset = %x\n", s3vScreen->depthOffset));
69 DEBUG(("s3vScreen->texOffset = %x\n", s3vScreen->texOffset));
70 DEBUG(("I will return from s3vCreateScreen now\n"));
71
72 DEBUG(("s3vScreen->bufs = 0x%x\n", s3vScreen->bufs));
73 return s3vScreen;
74 }
75
76 /* Destroy the device specific screen private data struct.
77 */
78 void s3vDestroyScreen( __DRIscreenPrivate *sPriv )
79 {
80 s3vScreenPtr s3vScreen = (s3vScreenPtr)sPriv->private;
81
82 DEBUG(("s3vDestroyScreen\n"));
83
84 /* First, unmap the dma buffers */
85 /*
86 drmUnmapBufs( s3vScreen->bufs );
87 */
88 /* Next, unmap all the regions */
89 /* while (s3vScreen->regionCount > 0) {
90
91 (void)drmUnmap(s3vScreen->regions[s3vScreen->regionCount].map,
92 s3vScreen->regions[s3vScreen->regionCount].size);
93 s3vScreen->regionCount--;
94
95 }
96 FREE(s3vScreen->regions); */
97 if (s3vScreen)
98 FREE(s3vScreen);
99 }