VirtualBox

source: vbox/trunk/src/VBox/GuestHost/OpenGL/packer/pack_shaders.c@ 20364

最後變更 在這個檔案從20364是 20327,由 vboxsync 提交於 16 年 前

crOpenGL: more opengl 2.0 functions

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Id
檔案大小: 12.3 KB
 
1/* $Id: pack_shaders.c 20327 2009-06-05 13:07:20Z vboxsync $ */
2
3/** @file
4 * VBox OpenGL DRI driver functions
5 */
6
7/*
8 * Copyright (C) 2009 Sun Microsystems, Inc.
9 *
10 * Sun Microsystems, Inc. confidential
11 * All rights reserved
12 */
13
14#include "packer.h"
15#include "cr_error.h"
16#include "cr_string.h"
17
18void PACK_APIENTRY crPackBindAttribLocation(GLuint program, GLuint index, const char *name)
19{
20 GET_PACKER_CONTEXT(pc);
21 unsigned char *data_ptr;
22 int cbName = crStrlen(name)+1;
23 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(program)+sizeof(index) + cbName*sizeof(*name);
24
25 GET_BUFFERED_POINTER(pc, packet_length);
26 WRITE_DATA_AI(int, packet_length);
27 WRITE_DATA_AI(GLenum, CR_BINDATTRIBLOCATION_EXTEND_OPCODE);
28 WRITE_DATA_AI(GLuint, program);
29 WRITE_DATA_AI(GLuint, index);
30 crMemcpy(data_ptr, name, cbName*sizeof(*name));
31 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
32}
33
34void PACK_APIENTRY crPackShaderSource(GLuint shader, GLsizei count, const char **string, const GLint *length)
35{
36 GET_PACKER_CONTEXT(pc);
37 unsigned char *data_ptr;
38 GLint *pLocalLength;
39 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(shader)+sizeof(count)+sizeof(GLint)+count*sizeof(*pLocalLength);
40 GLsizei i;
41
42 if ((0==count) || (!string)) return;
43
44 pLocalLength = crAlloc(count*sizeof(*length));
45 if (!pLocalLength) return;
46
47 for (i=0; i<count; ++i)
48 {
49 pLocalLength[i] = (length && (length[i]>=0)) ? length[i] : crStrlen(string[i])+1;
50 packet_length += pLocalLength[i];
51 }
52
53 if (length)
54 {
55 packet_length += count*sizeof(*length);
56 }
57
58 GET_BUFFERED_POINTER(pc, packet_length);
59 WRITE_DATA_AI(int, packet_length);
60 WRITE_DATA_AI(GLenum, CR_SHADERSOURCE_EXTEND_OPCODE);
61 WRITE_DATA_AI(GLuint, shader);
62 WRITE_DATA_AI(GLsizei, count);
63 WRITE_DATA_AI(GLint, (GLint)(length ? 1:0));
64 crMemcpy(data_ptr, pLocalLength, count*sizeof(*pLocalLength));
65 data_ptr += count*sizeof(*pLocalLength);
66
67 if (length)
68 {
69 crMemcpy(data_ptr, length, count*sizeof(*length));
70 data_ptr += count*sizeof(*length);
71 }
72
73 for (i=0; i<count; ++i)
74 {
75 crMemcpy(data_ptr, string[i], pLocalLength[i]);
76 data_ptr += pLocalLength[i];
77 }
78 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
79
80 crFree(pLocalLength);
81}
82
83void PACK_APIENTRY crPackUniform1fv(GLint location, GLsizei count, const GLfloat *value)
84{
85 GET_PACKER_CONTEXT(pc);
86 unsigned char *data_ptr;
87 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + count*sizeof(*value);
88
89 GET_BUFFERED_POINTER(pc, packet_length);
90 WRITE_DATA_AI(int, packet_length);
91 WRITE_DATA_AI(GLenum, CR_UNIFORM1FV_EXTEND_OPCODE);
92 WRITE_DATA_AI(GLint, location);
93 WRITE_DATA_AI(GLsizei, count);
94 crMemcpy(data_ptr, value, count*sizeof(*value));
95 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
96}
97
98void PACK_APIENTRY crPackUniform1iv(GLint location, GLsizei count, const GLint *value)
99{
100 GET_PACKER_CONTEXT(pc);
101 unsigned char *data_ptr;
102 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + count*sizeof(*value);
103
104 GET_BUFFERED_POINTER(pc, packet_length);
105 WRITE_DATA_AI(int, packet_length);
106 WRITE_DATA_AI(GLenum, CR_UNIFORM1IV_EXTEND_OPCODE);
107 WRITE_DATA_AI(GLint, location);
108 WRITE_DATA_AI(GLsizei, count);
109 crMemcpy(data_ptr, value, count*sizeof(*value));
110 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
111}
112
113void PACK_APIENTRY crPackUniform2fv(GLint location, GLsizei count, const GLfloat *value)
114{
115 GET_PACKER_CONTEXT(pc);
116 unsigned char *data_ptr;
117 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 2*count*sizeof(*value);
118
119 GET_BUFFERED_POINTER(pc, packet_length);
120 WRITE_DATA_AI(int, packet_length);
121 WRITE_DATA_AI(GLenum, CR_UNIFORM2FV_EXTEND_OPCODE);
122 WRITE_DATA_AI(GLint, location);
123 WRITE_DATA_AI(GLsizei, count);
124 crMemcpy(data_ptr, value, 2*count*sizeof(*value));
125 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
126}
127
128void PACK_APIENTRY crPackUniform2iv(GLint location, GLsizei count, const GLint *value)
129{
130 GET_PACKER_CONTEXT(pc);
131 unsigned char *data_ptr;
132 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 2*count*sizeof(*value);
133
134 GET_BUFFERED_POINTER(pc, packet_length);
135 WRITE_DATA_AI(int, packet_length);
136 WRITE_DATA_AI(GLenum, CR_UNIFORM2IV_EXTEND_OPCODE);
137 WRITE_DATA_AI(GLint, location);
138 WRITE_DATA_AI(GLsizei, count);
139 crMemcpy(data_ptr, value, 2*count*sizeof(*value));
140 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
141}
142
143void PACK_APIENTRY crPackUniform3fv(GLint location, GLsizei count, const GLfloat *value)
144{
145 GET_PACKER_CONTEXT(pc);
146 unsigned char *data_ptr;
147 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 3*count*sizeof(*value);
148
149 GET_BUFFERED_POINTER(pc, packet_length);
150 WRITE_DATA_AI(int, packet_length);
151 WRITE_DATA_AI(GLenum, CR_UNIFORM3FV_EXTEND_OPCODE);
152 WRITE_DATA_AI(GLint, location);
153 WRITE_DATA_AI(GLsizei, count);
154 crMemcpy(data_ptr, value, 3*count*sizeof(*value));
155 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
156}
157
158void PACK_APIENTRY crPackUniform3iv(GLint location, GLsizei count, const GLint *value)
159{
160 GET_PACKER_CONTEXT(pc);
161 unsigned char *data_ptr;
162 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 3*count*sizeof(*value);
163
164 GET_BUFFERED_POINTER(pc, packet_length);
165 WRITE_DATA_AI(int, packet_length);
166 WRITE_DATA_AI(GLenum, CR_UNIFORM3IV_EXTEND_OPCODE);
167 WRITE_DATA_AI(GLint, location);
168 WRITE_DATA_AI(GLsizei, count);
169 crMemcpy(data_ptr, value, 3*count*sizeof(*value));
170 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
171}
172
173void PACK_APIENTRY crPackUniform4fv(GLint location, GLsizei count, const GLfloat *value)
174{
175 GET_PACKER_CONTEXT(pc);
176 unsigned char *data_ptr;
177 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 4*count*sizeof(*value);
178
179 GET_BUFFERED_POINTER(pc, packet_length);
180 WRITE_DATA_AI(int, packet_length);
181 WRITE_DATA_AI(GLenum, CR_UNIFORM4FV_EXTEND_OPCODE);
182 WRITE_DATA_AI(GLint, location);
183 WRITE_DATA_AI(GLsizei, count);
184 crMemcpy(data_ptr, value, 4*count*sizeof(*value));
185 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
186}
187
188void PACK_APIENTRY crPackUniform4iv(GLint location, GLsizei count, const GLint *value)
189{
190 GET_PACKER_CONTEXT(pc);
191 unsigned char *data_ptr;
192 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 4*count*sizeof(*value);
193
194 GET_BUFFERED_POINTER(pc, packet_length);
195 WRITE_DATA_AI(int, packet_length);
196 WRITE_DATA_AI(GLenum, CR_UNIFORM4IV_EXTEND_OPCODE);
197 WRITE_DATA_AI(GLint, location);
198 WRITE_DATA_AI(GLsizei, count);
199 crMemcpy(data_ptr, value, 4*count*sizeof(*value));
200 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
201}
202
203void PACK_APIENTRY crPackUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
204{
205 GET_PACKER_CONTEXT(pc);
206 unsigned char *data_ptr;
207 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose) + 2*2*count*sizeof(*value);
208
209 GET_BUFFERED_POINTER(pc, packet_length);
210 WRITE_DATA_AI(int, packet_length);
211 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX2FV_EXTEND_OPCODE);
212 WRITE_DATA_AI(GLint, location);
213 WRITE_DATA_AI(GLsizei, count);
214 WRITE_DATA_AI(GLboolean, transpose);
215 crMemcpy(data_ptr, value, 2*2*count*sizeof(*value));
216 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
217}
218
219void PACK_APIENTRY crPackUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
220{
221 GET_PACKER_CONTEXT(pc);
222 unsigned char *data_ptr;
223 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose) + 3*3*count*sizeof(*value);
224
225 GET_BUFFERED_POINTER(pc, packet_length);
226 WRITE_DATA_AI(int, packet_length);
227 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX3FV_EXTEND_OPCODE);
228 WRITE_DATA_AI(GLint, location);
229 WRITE_DATA_AI(GLsizei, count);
230 WRITE_DATA_AI(GLboolean, transpose);
231 crMemcpy(data_ptr, value, 3*3*count*sizeof(*value));
232 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
233}
234
235void PACK_APIENTRY crPackUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
236{
237 GET_PACKER_CONTEXT(pc);
238 unsigned char *data_ptr;
239 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose) + 4*4*count*sizeof(*value);
240
241 GET_BUFFERED_POINTER(pc, packet_length);
242 WRITE_DATA_AI(int, packet_length);
243 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX4FV_EXTEND_OPCODE);
244 WRITE_DATA_AI(GLint, location);
245 WRITE_DATA_AI(GLsizei, count);
246 WRITE_DATA_AI(GLboolean, transpose);
247 crMemcpy(data_ptr, value, 4*4*count*sizeof(*value));
248 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
249}
250
251void PACK_APIENTRY crPackDrawBuffers(GLsizei n, const GLenum *bufs)
252{
253 GET_PACKER_CONTEXT(pc);
254 unsigned char *data_ptr;
255 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(n) + n*sizeof(*bufs);
256
257 GET_BUFFERED_POINTER(pc, packet_length);
258 WRITE_DATA_AI(int, packet_length);
259 WRITE_DATA_AI(GLenum, CR_DRAWBUFFERS_EXTEND_OPCODE);
260 WRITE_DATA_AI(GLsizei, n);
261 crMemcpy(data_ptr, bufs, n*sizeof(*bufs));
262 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
263}
264
265void PACK_APIENTRY crPackBindAttribLocationSWAP(GLuint program, GLuint index, const char *name)
266{
267 GET_PACKER_CONTEXT(pc);
268 (void)program;
269 (void)index;
270 (void)name;
271 crError ("No swap version");
272 (void) pc;
273}
274
275void PACK_APIENTRY crPackShaderSourceSWAP(GLuint shader, GLsizei count, const char **string, const GLint *length)
276{
277 GET_PACKER_CONTEXT(pc);
278 (void)shader;
279 (void)count;
280 (void)string;
281 (void)length;
282 crError ("No swap version");
283 (void) pc;
284}
285
286void PACK_APIENTRY crPackUniform1fvSWAP(GLint location, GLsizei count, const GLfloat *value)
287{
288 GET_PACKER_CONTEXT(pc);
289 (void)location;
290 (void)count;
291 (void)value;
292 crError ("No swap version");
293 (void) pc;
294}
295
296
297void PACK_APIENTRY crPackUniform1ivSWAP(GLint location, GLsizei count, const GLint *value)
298{
299 GET_PACKER_CONTEXT(pc);
300 (void)location;
301 (void)count;
302 (void)value;
303 crError ("No swap version");
304 (void) pc;
305}
306
307void PACK_APIENTRY crPackUniform2fvSWAP(GLint location, GLsizei count, const GLfloat *value)
308{
309 GET_PACKER_CONTEXT(pc);
310 (void)location;
311 (void)count;
312 (void)value;
313 crError ("No swap version");
314 (void) pc;
315}
316
317void PACK_APIENTRY crPackUniform2ivSWAP(GLint location, GLsizei count, const GLint * value)
318{
319 GET_PACKER_CONTEXT(pc);
320 (void)location;
321 (void)count;
322 (void)value;
323 crError ("No swap version");
324 (void) pc;
325}
326
327void PACK_APIENTRY crPackUniform3fvSWAP(GLint location, GLsizei count, const GLfloat *value)
328{
329 GET_PACKER_CONTEXT(pc);
330 (void)location;
331 (void)count;
332 (void)value;
333 crError ("No swap version");
334 (void) pc;
335}
336
337void PACK_APIENTRY crPackUniform3ivSWAP(GLint location, GLsizei count, const GLint *value)
338{
339 GET_PACKER_CONTEXT(pc);
340 (void)location;
341 (void)count;
342 (void)value;
343 crError ("No swap version");
344 (void) pc;
345}
346
347void PACK_APIENTRY crPackUniform4fvSWAP(GLint location, GLsizei count, const GLfloat *value)
348{
349 GET_PACKER_CONTEXT(pc);
350 (void)location;
351 (void)count;
352 (void)value;
353 crError ("No swap version");
354 (void) pc;
355}
356
357void PACK_APIENTRY crPackUniform4ivSWAP(GLint location, GLsizei count, const GLint *value)
358{
359 GET_PACKER_CONTEXT(pc);
360 (void)location;
361 (void)count;
362 (void)value;
363 crError ("No swap version");
364 (void) pc;
365}
366
367void PACK_APIENTRY crPackUniformMatrix2fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
368{
369 GET_PACKER_CONTEXT(pc);
370 (void)location;
371 (void)count;
372 (void)transpose;
373 (void)value;
374 crError ("No swap version");
375 (void) pc;
376}
377
378void PACK_APIENTRY crPackUniformMatrix3fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
379{
380 GET_PACKER_CONTEXT(pc);
381 (void)location;
382 (void)count;
383 (void)transpose;
384 (void)value;
385 crError ("No swap version");
386 (void) pc;
387}
388
389void PACK_APIENTRY crPackUniformMatrix4fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
390{
391 GET_PACKER_CONTEXT(pc);
392 (void)location;
393 (void)count;
394 (void)transpose;
395 (void)value;
396 crError ("No swap version");
397 (void) pc;
398}
399
400void PACK_APIENTRY crPackDrawBuffersSWAP(GLsizei n, const GLenum *bufs)
401{
402 GET_PACKER_CONTEXT(pc);
403 (void)n;
404 (void)bufs;
405 crError ("No swap version");
406 (void) pc;
407}
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette