Subversion Repositories Kolibri OS

Rev

Rev 883 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
808 serge 1
 
883 serge 2
 
3
4
 
5
 
877 serge 6
#include 
808 serge 7
 
877 serge 8
#include 
9
10
#include "pci.h"
876 serge 11
 
881 serge 12
#include "syscall.h"
13
 
877 serge 14
#include "radeon_reg.h"
15
 
881 serge 16
#include "ati2d.h"
17
 
808 serge 18
19
RHD_t rhd __attribute__ ((aligned (128)));    /* reduce cache lock */
20
 
883 serge 21
static clip_t  clip;
808 serge 22
 
23
static local_pixmap_t scr_pixmap;
24
 
876 serge 25
int Init3DEngine(RHDPtr info);
815 serge 26
 
885 serge 27
int __stdcall srv_2d(ioctl_t *io);
876 serge 28
 
877 serge 29
u32_t __stdcall drvEntry(int action)
808 serge 30
 
877 serge 31
    RHDPtr rhdPtr;
808 serge 32
    u32_t retval;
885 serge 33
34
    int i;
808 serge 35
 
885 serge 36
    if(action != 1)
808 serge 37
 
885 serge 38
39
    if(!dbg_open("/rd/1/drivers/ati2d.log"))
808 serge 40
 
885 serge 41
        printf("Can't open /rd/1/drivers/ati2d.log\nExit\n");
42
        return 0;
43
    }
44
    if( GetScreenBpp() != 32)
45
    {
46
        dbgprintf("32 bpp dispaly mode required !\nExit\t");
47
        return 0;
48
    }
49
50
    if((rhdPtr=FindPciDevice())==NULL)
808 serge 51
 
885 serge 52
        dbgprintf("Device not found\n");
53
        return 0;
54
    };
55
56
    for(i=0;i<6;i++)
808 serge 57
 
885 serge 58
        if(rhd.memBase[i])
59
           dbgprintf("Memory base_%d 0x%x size 0x%x\n",
60
                     i,rhd.memBase[i],(1<
61
    };
62
    for(i=0;i<6;i++)
63
    {
64
      if(rhd.ioBase[i])
65
        dbgprintf("Io base_%d 0x%x size 0x%x\n",
66
                  i,rhd.ioBase[i],(1<
67
    };
68
    if(!RHDPreInit())
69
        return 0;
70
71
    R5xx2DInit();
808 serge 72
 
885 serge 73
    Init3DEngine(&rhd);
877 serge 74
 
885 serge 75
808 serge 76
 
77
 
885 serge 78
79
    return retval;
808 serge 80
 
885 serge 81
808 serge 82
83
 
84
 
85
#define SRV_GETVERSION  0
86
 
87
88
 
89
 
879 serge 90
  u32_t *inp;
808 serge 91
  u32_t *outp;
877 serge 92
93
  inp = io->input;
808 serge 94
 
95
96
  switch(io->io_code)
97
 
98
    case SRV_GETVERSION:
99
      if(io->out_size==4)
100
      {
101
        *outp = API_VERSION;
102
        return 0;
103
      }
104
      break;
105
106
      case PX_CREATE:
107
 
877 serge 108
          return CreatePixmap((pixmap_t*)inp);
109
        break;
110
111
      case PX_DESTROY:
112
 
113
          return DestroyPixmap((pixmap_t*)inp);
114
        break;
115
116
      case PX_CLEAR:
117
 
879 serge 118
          return ClearPixmap((io_clear_t*)inp);
119
        break;
120
121
      case PX_DRAW_RECT:
122
 
877 serge 123
          return DrawRect((io_draw_t*)inp);
878 serge 124
        break;
879 serge 125
808 serge 126
      case PX_FILL_RECT:
127
 
877 serge 128
          return FillRect((io_fill_t*)inp);
879 serge 129
        break;
130
810 serge 131
      case PX_LINE:
877 serge 132
 
885 serge 133
          return Line((io_draw_t*)inp);
134
        break;
135
136
      case PX_BLIT:
137
 
877 serge 138
          return Blit((io_blit_t*)inp);
139
        break;
879 serge 140
877 serge 141
     case  PX_BLIT_TRANSPARENT:
142
 
143
          return BlitTransparent((io_blit_t*)inp);
879 serge 144
        break;
145
877 serge 146
      case PX_BLIT_ALPHA:
147
 
885 serge 148
          return RadeonComposite((io_blit_t*)inp);
149
        break;
150
808 serge 151
    default:
152
 
153
  };
154
  return ERR_PARAM;
155
}
156
157
158
 
159
 
160
#include "ati_mem.c"
161
162
#include "init_cp.c"
163
 
883 serge 164
808 serge 165
#include "clip.inc"
876 serge 166
 
167
#include "accel_2d.inc"
877 serge 168
#include "init_3d.inc"
808 serge 169
#include "blend.inc"
885 serge 170
>
171
>
808 serge 172
 
173