summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/i965/intel_structs.h
blob: 8ecb99834f476f54ecff65ff6c8de6cadfd889aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef INTEL_STRUCTS_H
#define INTEL_STRUCTS_H

#include <GL/gl.h>

struct br0 {
   GLuint length:8;
   GLuint pad0:3;
   GLuint dst_tiled:1;
   GLuint pad1:8;
   GLuint write_rgb:1;
   GLuint write_alpha:1;
   GLuint opcode:7;
   GLuint client:3;
};

   
struct br13 {
   GLint dest_pitch:16;
   GLuint rop:8;
   GLuint color_depth:2;
   GLuint pad1:3;
   GLuint mono_source_transparency:1;
   GLuint clipping_enable:1;
   GLuint pad0:1;
};



/* This is an attempt to move some of the 2D interaction in this
 * driver to using structs for packets rather than a bunch of #defines
 * and dwords.
 */
struct xy_color_blit {
   struct br0 br0;
   struct br13 br13;

   struct {
      GLuint dest_x1:16;
      GLuint dest_y1:16;
   } dw2;

   struct {
      GLuint dest_x2:16;
      GLuint dest_y2:16;
   } dw3;
   
   GLuint dest_base_addr;
   GLuint color;
};

struct xy_src_copy_blit {
   struct br0 br0;
   struct br13 br13;

   struct {
      GLuint dest_x1:16;
      GLuint dest_y1:16;
   } dw2;

   struct {
      GLuint dest_x2:16;
      GLuint dest_y2:16;
   } dw3;
   
   GLuint dest_base_addr;

   struct {
      GLuint src_x1:16;
      GLuint src_y1:16;
   } dw5;

   struct {
      GLint src_pitch:16;
      GLuint pad:16;
   } dw6;
   
   GLuint src_base_addr;
};

struct xy_setup_blit {
   struct br0 br0;
   struct br13 br13;

   struct {
      GLuint clip_x1:16;
      GLuint clip_y1:16;
   } dw2;

   struct {
      GLuint clip_x2:16;
      GLuint clip_y2:16;
   } dw3;
      
   GLuint dest_base_addr;
   GLuint background_color;
   GLuint foreground_color;
   GLuint pattern_base_addr;
};


struct xy_text_immediate_blit {
   struct {
      GLuint length:8;
      GLuint pad2:3;
      GLuint dst_tiled:1;
      GLuint pad1:4;
      GLuint byte_packed:1;
      GLuint pad0:5;
      GLuint opcode:7;
      GLuint client:3;
   } dw0;

   struct {
      GLuint dest_x1:16;
      GLuint dest_y1:16;
   } dw1;

   struct {
      GLuint dest_x2:16;
      GLuint dest_y2:16;
   } dw2;   

   /* Src bitmap data follows as inline dwords.
    */
};


#define CLIENT_2D 0x2
#define OPCODE_XY_SETUP_BLT 0x1
#define OPCODE_XY_COLOR_BLT 0x50
#define OPCODE_XY_TEXT_IMMEDIATE_BLT 0x31

#endif