Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
808 serge 1
 
2
#define DRAW_RECT  2
3
#define LINE_2P    3
4
#define BLIT       4
810 serge 5
808 serge 6
 
810 serge 7
 
808 serge 8
typedef unsigned int u32_t;
9
10
 
11
{
12
  int x;
13
  int y;
14
  int w;
15
  int h;
16
  u32 color;
17
}draw_t;
18
19
 
20
{
21
  int x;
22
  int y;
23
  int w;
24
  int h;
25
26
 
27
  color_t fcolor;
28
29
 
30
  u32_t   bmp1;
31
}fill_t;
32
33
 
34
{
35
  int src_x;
810 serge 36
  int src_y;
37
  int dst_x;
38
  int dst_y;
39
  int w;
40
  int h;
41
}blit_t;
42
43
 
44
{
45
  int x0;
808 serge 46
  int y0;
47
  int x1;
48
  int y1;
49
  u32 color;
50
}line2p_t;
51
52
 
53
int BlockClip( int *x1, int *y1, int *x2, int* y2);
54
55
 
56
int FillRect(fill_t * fill);
57
58
 
59
60
 
810 serge 61
808 serge 62
 
63
#	define RADEON_GMC_DST_PITCH_OFFSET_CNTL	(1 << 1)
64
# define RADEON_GMC_BRUSH_SOLID_COLOR     (13 << 4)
811 serge 65
# define RADEON_GMC_BRUSH_NONE            (15 << 4)
66
# define RADEON_GMC_DST_16BPP             (4 << 8)
67
# define RADEON_GMC_DST_24BPP             (5 << 8)
68
# define RADEON_GMC_DST_32BPP             (6 << 8)
69
# define RADEON_GMC_DST_DATATYPE_SHIFT     8
70
# define RADEON_GMC_SRC_DATATYPE_COLOR    (3 << 12)
71
# define RADEON_DP_SRC_SOURCE_MEMORY      (2 << 24)
72
# define RADEON_DP_SRC_SOURCE_HOST_DATA   (3 << 24)
73
# define RADEON_GMC_CLR_CMP_CNTL_DIS      (1 << 28)
74
# define RADEON_GMC_WR_MSK_DIS            (1 << 30)
75
# define RADEON_ROP3_S                 0x00cc0000
76
# define RADEON_ROP3_P                 0x00f00000
77
808 serge 78
 
811 serge 79
#define RADEON_CP_PACKET1              0x40000000
80
#define RADEON_CP_PACKET2              0x80000000
81
#define RADEON_CP_PACKET3              0xC0000000
808 serge 82
83
 
84
# define RADEON_CNTL_BITBLT            0x00009200
810 serge 85
86
 
808 serge 87
# define RADEON_CNTL_PAINT_MULTI       0x00009A00
88
89
 
811 serge 90
	(RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2))
91
92
 
93
	(RADEON_CP_PACKET1 | (((reg1) >> 2) << 11) | ((reg0) >> 2))
94
95
 
96
  (RADEON_CP_PACKET2)
97
98
 
808 serge 99
	(RADEON_CP_PACKET3 | (pkt) | ((n) << 16))
100
101
 
102
  ring = rhd.ring_base;                 \
103
  write = rhd.ring_wp;                  \
104
} while (0)
105
106
 
811 serge 107
108
 
808 serge 109
	ring[write++] = (x);						\
110
} while (0)
111
112
 
811 serge 113
do {									\
114
    OUT_RING(CP_PACKET0(reg, 0));					\
115
    OUT_RING(val);							\
116
} while (0)
117
118
 
808 serge 119
120
 
121
  rhd.ring_wp = write & 0x1FFF;                       \
122
  /* Flush writes to ring */                          \
123
  DRM_MEMORYBARRIER();                                \
124
  /*GET_RING_HEAD( dev_priv );          */            \
125
  OUTREG( RADEON_CP_RB_WPTR, rhd.ring_wp);            \
126
	/* read from PCI bus to ensure correct posting */		\
127
  INREG( RADEON_CP_RB_RPTR );                         \
128
} while (0)
129