VirtualBox

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

最後變更 在這個檔案從51504是 51200,由 vboxsync 提交於 11 年 前

crOpenGL: getAttribLocations

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Id
檔案大小: 28.0 KB
 
1/* $Id: pack_shaders.c 51200 2014-05-06 17:21:16Z vboxsync $ */
2
3/** @file
4 * VBox OpenGL DRI driver functions
5 */
6
7/*
8 * Copyright (C) 2009-2012 Oracle Corporation
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.alldomusa.eu.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 */
18
19#include "packer.h"
20#include "cr_error.h"
21#include "cr_string.h"
22
23void PACK_APIENTRY crPackBindAttribLocation(GLuint program, GLuint index, const char *name)
24{
25 CR_GET_PACKER_CONTEXT(pc);
26 unsigned char *data_ptr;
27 int cbName = crStrlen(name)+1;
28 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(program)+sizeof(index) + cbName*sizeof(*name);
29
30 CR_GET_BUFFERED_POINTER(pc, packet_length);
31 WRITE_DATA_AI(int, packet_length);
32 WRITE_DATA_AI(GLenum, CR_BINDATTRIBLOCATION_EXTEND_OPCODE);
33 WRITE_DATA_AI(GLuint, program);
34 WRITE_DATA_AI(GLuint, index);
35 crMemcpy(data_ptr, name, cbName*sizeof(*name));
36 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
37 CR_UNLOCK_PACKER_CONTEXT(pc);
38}
39
40void PACK_APIENTRY crPackShaderSource(GLuint shader, GLsizei count, const char **string, const GLint *length)
41{
42 CR_GET_PACKER_CONTEXT(pc);
43 unsigned char *data_ptr;
44 GLint *pLocalLength;
45 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(shader)+sizeof(count)+sizeof(GLint)+count*sizeof(*pLocalLength);
46 GLsizei i;
47
48 if ((0==count) || (!string)) return;
49
50 pLocalLength = crAlloc(count*sizeof(*length));
51 if (!pLocalLength) return;
52
53 for (i=0; i<count; ++i)
54 {
55 pLocalLength[i] = ((length && (length[i]>=0)) ? length[i] : crStrlen(string[i]))+1;
56 packet_length += pLocalLength[i];
57 }
58
59 if (length)
60 {
61 packet_length += count*sizeof(*length);
62 }
63
64 CR_GET_BUFFERED_POINTER(pc, packet_length);
65 WRITE_DATA_AI(int, packet_length);
66 WRITE_DATA_AI(GLenum, CR_SHADERSOURCE_EXTEND_OPCODE);
67 WRITE_DATA_AI(GLuint, shader);
68 WRITE_DATA_AI(GLsizei, count);
69 WRITE_DATA_AI(GLint, (GLint)(length ? 1:0));
70 crMemcpy(data_ptr, pLocalLength, count*sizeof(*pLocalLength));
71 data_ptr += count*sizeof(*pLocalLength);
72
73 if (length)
74 {
75 crMemcpy(data_ptr, length, count*sizeof(*length));
76 data_ptr += count*sizeof(*length);
77 }
78
79 for (i=0; i<count; ++i)
80 {
81 if (string[i])
82 {
83 if (length && (length[i]>=0))
84 {
85 /* include \0 in the string to make intel drivers happy */
86 crMemcpy(data_ptr, string[i], pLocalLength[i] - 1);
87 data_ptr[pLocalLength[i] - 1] = '\0';
88 }
89 else
90 {
91 /* the \0 s already in the string */
92 crMemcpy(data_ptr, string[i], pLocalLength[i]);
93 }
94 }
95 else
96 {
97 CRASSERT(pLocalLength[i]==1);
98 *data_ptr = 0;
99 }
100 data_ptr += pLocalLength[i];
101 }
102 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
103 CR_UNLOCK_PACKER_CONTEXT(pc);
104
105 crFree(pLocalLength);
106}
107
108void PACK_APIENTRY crPackUniform1fv(GLint location, GLsizei count, const GLfloat *value)
109{
110 CR_GET_PACKER_CONTEXT(pc);
111 unsigned char *data_ptr;
112 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + count*sizeof(*value);
113
114 CR_GET_BUFFERED_POINTER(pc, packet_length);
115 WRITE_DATA_AI(int, packet_length);
116 WRITE_DATA_AI(GLenum, CR_UNIFORM1FV_EXTEND_OPCODE);
117 WRITE_DATA_AI(GLint, location);
118 WRITE_DATA_AI(GLsizei, count);
119 crMemcpy(data_ptr, value, count*sizeof(*value));
120 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
121 CR_UNLOCK_PACKER_CONTEXT(pc);
122}
123
124void PACK_APIENTRY crPackUniform1iv(GLint location, GLsizei count, const GLint *value)
125{
126 CR_GET_PACKER_CONTEXT(pc);
127 unsigned char *data_ptr;
128 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + count*sizeof(*value);
129
130 CR_GET_BUFFERED_POINTER(pc, packet_length);
131 WRITE_DATA_AI(int, packet_length);
132 WRITE_DATA_AI(GLenum, CR_UNIFORM1IV_EXTEND_OPCODE);
133 WRITE_DATA_AI(GLint, location);
134 WRITE_DATA_AI(GLsizei, count);
135 crMemcpy(data_ptr, value, count*sizeof(*value));
136 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
137 CR_UNLOCK_PACKER_CONTEXT(pc);
138}
139
140void PACK_APIENTRY crPackUniform2fv(GLint location, GLsizei count, const GLfloat *value)
141{
142 CR_GET_PACKER_CONTEXT(pc);
143 unsigned char *data_ptr;
144 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 2*count*sizeof(*value);
145
146 CR_GET_BUFFERED_POINTER(pc, packet_length);
147 WRITE_DATA_AI(int, packet_length);
148 WRITE_DATA_AI(GLenum, CR_UNIFORM2FV_EXTEND_OPCODE);
149 WRITE_DATA_AI(GLint, location);
150 WRITE_DATA_AI(GLsizei, count);
151 crMemcpy(data_ptr, value, 2*count*sizeof(*value));
152 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
153 CR_UNLOCK_PACKER_CONTEXT(pc);
154}
155
156void PACK_APIENTRY crPackUniform2iv(GLint location, GLsizei count, const GLint *value)
157{
158 CR_GET_PACKER_CONTEXT(pc);
159 unsigned char *data_ptr;
160 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 2*count*sizeof(*value);
161
162 CR_GET_BUFFERED_POINTER(pc, packet_length);
163 WRITE_DATA_AI(int, packet_length);
164 WRITE_DATA_AI(GLenum, CR_UNIFORM2IV_EXTEND_OPCODE);
165 WRITE_DATA_AI(GLint, location);
166 WRITE_DATA_AI(GLsizei, count);
167 crMemcpy(data_ptr, value, 2*count*sizeof(*value));
168 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
169 CR_UNLOCK_PACKER_CONTEXT(pc);
170}
171
172void PACK_APIENTRY crPackUniform3fv(GLint location, GLsizei count, const GLfloat *value)
173{
174 CR_GET_PACKER_CONTEXT(pc);
175 unsigned char *data_ptr;
176 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 3*count*sizeof(*value);
177
178 CR_GET_BUFFERED_POINTER(pc, packet_length);
179 WRITE_DATA_AI(int, packet_length);
180 WRITE_DATA_AI(GLenum, CR_UNIFORM3FV_EXTEND_OPCODE);
181 WRITE_DATA_AI(GLint, location);
182 WRITE_DATA_AI(GLsizei, count);
183 crMemcpy(data_ptr, value, 3*count*sizeof(*value));
184 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
185 CR_UNLOCK_PACKER_CONTEXT(pc);
186}
187
188void PACK_APIENTRY crPackUniform3iv(GLint location, GLsizei count, const GLint *value)
189{
190 CR_GET_PACKER_CONTEXT(pc);
191 unsigned char *data_ptr;
192 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 3*count*sizeof(*value);
193
194 CR_GET_BUFFERED_POINTER(pc, packet_length);
195 WRITE_DATA_AI(int, packet_length);
196 WRITE_DATA_AI(GLenum, CR_UNIFORM3IV_EXTEND_OPCODE);
197 WRITE_DATA_AI(GLint, location);
198 WRITE_DATA_AI(GLsizei, count);
199 crMemcpy(data_ptr, value, 3*count*sizeof(*value));
200 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
201 CR_UNLOCK_PACKER_CONTEXT(pc);
202}
203
204void PACK_APIENTRY crPackUniform4fv(GLint location, GLsizei count, const GLfloat *value)
205{
206 CR_GET_PACKER_CONTEXT(pc);
207 unsigned char *data_ptr;
208 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 4*count*sizeof(*value);
209
210 CR_GET_BUFFERED_POINTER(pc, packet_length);
211 WRITE_DATA_AI(int, packet_length);
212 WRITE_DATA_AI(GLenum, CR_UNIFORM4FV_EXTEND_OPCODE);
213 WRITE_DATA_AI(GLint, location);
214 WRITE_DATA_AI(GLsizei, count);
215 crMemcpy(data_ptr, value, 4*count*sizeof(*value));
216 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
217 CR_UNLOCK_PACKER_CONTEXT(pc);
218}
219
220void PACK_APIENTRY crPackUniform4iv(GLint location, GLsizei count, const GLint *value)
221{
222 CR_GET_PACKER_CONTEXT(pc);
223 unsigned char *data_ptr;
224 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count) + 4*count*sizeof(*value);
225
226 CR_GET_BUFFERED_POINTER(pc, packet_length);
227 WRITE_DATA_AI(int, packet_length);
228 WRITE_DATA_AI(GLenum, CR_UNIFORM4IV_EXTEND_OPCODE);
229 WRITE_DATA_AI(GLint, location);
230 WRITE_DATA_AI(GLsizei, count);
231 crMemcpy(data_ptr, value, 4*count*sizeof(*value));
232 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
233 CR_UNLOCK_PACKER_CONTEXT(pc);
234}
235
236void PACK_APIENTRY crPackUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
237{
238 CR_GET_PACKER_CONTEXT(pc);
239 unsigned char *data_ptr;
240 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose) + 2*2*count*sizeof(*value);
241
242 CR_GET_BUFFERED_POINTER(pc, packet_length);
243 WRITE_DATA_AI(int, packet_length);
244 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX2FV_EXTEND_OPCODE);
245 WRITE_DATA_AI(GLint, location);
246 WRITE_DATA_AI(GLsizei, count);
247 WRITE_DATA_AI(GLboolean, transpose);
248 crMemcpy(data_ptr, value, 2*2*count*sizeof(*value));
249 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
250 CR_UNLOCK_PACKER_CONTEXT(pc);
251}
252
253void PACK_APIENTRY crPackUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
254{
255 CR_GET_PACKER_CONTEXT(pc);
256 unsigned char *data_ptr;
257 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose) + 3*3*count*sizeof(*value);
258
259 CR_GET_BUFFERED_POINTER(pc, packet_length);
260 WRITE_DATA_AI(int, packet_length);
261 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX3FV_EXTEND_OPCODE);
262 WRITE_DATA_AI(GLint, location);
263 WRITE_DATA_AI(GLsizei, count);
264 WRITE_DATA_AI(GLboolean, transpose);
265 crMemcpy(data_ptr, value, 3*3*count*sizeof(*value));
266 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
267 CR_UNLOCK_PACKER_CONTEXT(pc);
268}
269
270void PACK_APIENTRY crPackUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
271{
272 CR_GET_PACKER_CONTEXT(pc);
273 unsigned char *data_ptr;
274 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose) + 4*4*count*sizeof(*value);
275
276 CR_GET_BUFFERED_POINTER(pc, packet_length);
277 WRITE_DATA_AI(int, packet_length);
278 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX4FV_EXTEND_OPCODE);
279 WRITE_DATA_AI(GLint, location);
280 WRITE_DATA_AI(GLsizei, count);
281 WRITE_DATA_AI(GLboolean, transpose);
282 crMemcpy(data_ptr, value, 4*4*count*sizeof(*value));
283 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
284 CR_UNLOCK_PACKER_CONTEXT(pc);
285}
286
287void PACK_APIENTRY crPackUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
288{
289 CR_GET_PACKER_CONTEXT(pc);
290 unsigned char *data_ptr;
291 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose)
292 + 2*3*count*sizeof(*value);
293
294 CR_GET_BUFFERED_POINTER(pc, packet_length);
295 WRITE_DATA_AI(int, packet_length);
296 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX2X3FV_EXTEND_OPCODE);
297 WRITE_DATA_AI(GLint, location);
298 WRITE_DATA_AI(GLsizei, count);
299 WRITE_DATA_AI(GLboolean, transpose);
300 crMemcpy(data_ptr, value, 2*3*count*sizeof(*value));
301 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
302 CR_UNLOCK_PACKER_CONTEXT(pc);
303}
304
305void PACK_APIENTRY crPackUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
306{
307 CR_GET_PACKER_CONTEXT(pc);
308 unsigned char *data_ptr;
309 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose)
310 + 3*2*count*sizeof(*value);
311
312 CR_GET_BUFFERED_POINTER(pc, packet_length);
313 WRITE_DATA_AI(int, packet_length);
314 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX3X2FV_EXTEND_OPCODE);
315 WRITE_DATA_AI(GLint, location);
316 WRITE_DATA_AI(GLsizei, count);
317 WRITE_DATA_AI(GLboolean, transpose);
318 crMemcpy(data_ptr, value, 3*2*count*sizeof(*value));
319 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
320 CR_UNLOCK_PACKER_CONTEXT(pc);
321}
322
323void PACK_APIENTRY crPackUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
324{
325 CR_GET_PACKER_CONTEXT(pc);
326 unsigned char *data_ptr;
327 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose)
328 + 2*4*count*sizeof(*value);
329
330 CR_GET_BUFFERED_POINTER(pc, packet_length);
331 WRITE_DATA_AI(int, packet_length);
332 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX2X4FV_EXTEND_OPCODE);
333 WRITE_DATA_AI(GLint, location);
334 WRITE_DATA_AI(GLsizei, count);
335 WRITE_DATA_AI(GLboolean, transpose);
336 crMemcpy(data_ptr, value, 2*4*count*sizeof(*value));
337 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
338 CR_UNLOCK_PACKER_CONTEXT(pc);
339}
340
341void PACK_APIENTRY crPackUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
342{
343 CR_GET_PACKER_CONTEXT(pc);
344 unsigned char *data_ptr;
345 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose)
346 + 4*2*count*sizeof(*value);
347
348 CR_GET_BUFFERED_POINTER(pc, packet_length);
349 WRITE_DATA_AI(int, packet_length);
350 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX4X2FV_EXTEND_OPCODE);
351 WRITE_DATA_AI(GLint, location);
352 WRITE_DATA_AI(GLsizei, count);
353 WRITE_DATA_AI(GLboolean, transpose);
354 crMemcpy(data_ptr, value, 4*2*count*sizeof(*value));
355 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
356 CR_UNLOCK_PACKER_CONTEXT(pc);
357}
358
359void PACK_APIENTRY crPackUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
360{
361 CR_GET_PACKER_CONTEXT(pc);
362 unsigned char *data_ptr;
363 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose)
364 + 3*4*count*sizeof(*value);
365
366 CR_GET_BUFFERED_POINTER(pc, packet_length);
367 WRITE_DATA_AI(int, packet_length);
368 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX3X4FV_EXTEND_OPCODE);
369 WRITE_DATA_AI(GLint, location);
370 WRITE_DATA_AI(GLsizei, count);
371 WRITE_DATA_AI(GLboolean, transpose);
372 crMemcpy(data_ptr, value, 3*4*count*sizeof(*value));
373 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
374 CR_UNLOCK_PACKER_CONTEXT(pc);
375}
376
377void PACK_APIENTRY crPackUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
378{
379 CR_GET_PACKER_CONTEXT(pc);
380 unsigned char *data_ptr;
381 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose)
382 + 4*3*count*sizeof(*value);
383
384 CR_GET_BUFFERED_POINTER(pc, packet_length);
385 WRITE_DATA_AI(int, packet_length);
386 WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX4X3FV_EXTEND_OPCODE);
387 WRITE_DATA_AI(GLint, location);
388 WRITE_DATA_AI(GLsizei, count);
389 WRITE_DATA_AI(GLboolean, transpose);
390 crMemcpy(data_ptr, value, 4*3*count*sizeof(*value));
391 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
392 CR_UNLOCK_PACKER_CONTEXT(pc);
393}
394
395void PACK_APIENTRY crPackDrawBuffers(GLsizei n, const GLenum *bufs)
396{
397 CR_GET_PACKER_CONTEXT(pc);
398 unsigned char *data_ptr;
399 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(n) + n*sizeof(*bufs);
400
401 CR_GET_BUFFERED_POINTER(pc, packet_length);
402 WRITE_DATA_AI(int, packet_length);
403 WRITE_DATA_AI(GLenum, CR_DRAWBUFFERS_EXTEND_OPCODE);
404 WRITE_DATA_AI(GLsizei, n);
405 crMemcpy(data_ptr, bufs, n*sizeof(*bufs));
406 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
407 CR_UNLOCK_PACKER_CONTEXT(pc);
408}
409
410/*@todo next 8 functions are bit hacky,
411 * we expect packspu to pass a single structure with all output parameters via first output pointer.
412 * it'd be better to add CRMessageMultiReadback one day.
413 */
414void PACK_APIENTRY crPackGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, char * name, int * writeback)
415{
416 CR_GET_PACKER_CONTEXT(pc);
417 unsigned char *data_ptr;
418 (void) pc;
419 (void) size;
420 (void) type;
421 (void) name;
422 CR_GET_BUFFERED_POINTER(pc, 36);
423 WRITE_DATA(0, GLint, 36);
424 WRITE_DATA(4, GLenum, CR_GETACTIVEATTRIB_EXTEND_OPCODE);
425 WRITE_DATA(8, GLuint, program);
426 WRITE_DATA(12, GLuint, index);
427 WRITE_DATA(16, GLsizei, bufSize);
428 WRITE_NETWORK_POINTER(20, (void *) length);
429 WRITE_NETWORK_POINTER(28, (void *) writeback);
430 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
431 CR_UNLOCK_PACKER_CONTEXT(pc);
432}
433
434void PACK_APIENTRY crPackGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, char * name, int * writeback)
435{
436 CR_GET_PACKER_CONTEXT(pc);
437 unsigned char *data_ptr;
438 (void) pc;
439 (void) size;
440 (void) type;
441 (void) name;
442 CR_GET_BUFFERED_POINTER(pc, 36);
443 WRITE_DATA(0, GLint, 36);
444 WRITE_DATA(4, GLenum, CR_GETACTIVEUNIFORM_EXTEND_OPCODE);
445 WRITE_DATA(8, GLuint, program);
446 WRITE_DATA(12, GLuint, index);
447 WRITE_DATA(16, GLsizei, bufSize);
448 WRITE_NETWORK_POINTER(20, (void *) length);
449 WRITE_NETWORK_POINTER(28, (void *) writeback);
450 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
451 CR_UNLOCK_PACKER_CONTEXT(pc);
452}
453
454void PACK_APIENTRY crPackGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders, int * writeback)
455{
456 CR_GET_PACKER_CONTEXT(pc);
457 unsigned char *data_ptr;
458 (void) pc;
459 (void) shaders;
460 CR_GET_BUFFERED_POINTER(pc, 32);
461 WRITE_DATA(0, GLint, 32);
462 WRITE_DATA(4, GLenum, CR_GETATTACHEDSHADERS_EXTEND_OPCODE);
463 WRITE_DATA(8, GLuint, program);
464 WRITE_DATA(12, GLsizei, maxCount);
465 WRITE_NETWORK_POINTER(16, (void *) count);
466 WRITE_NETWORK_POINTER(24, (void *) writeback);
467 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
468 CR_UNLOCK_PACKER_CONTEXT(pc);
469}
470
471void PACK_APIENTRY crPackGetAttachedObjectsARB(VBoxGLhandleARB containerObj, GLsizei maxCount, GLsizei * count, VBoxGLhandleARB * obj, int * writeback)
472{
473 CR_GET_PACKER_CONTEXT(pc);
474 unsigned char *data_ptr;
475 (void) pc;
476 CR_GET_BUFFERED_POINTER(pc, 32);
477 WRITE_DATA(0, GLint, 32);
478 WRITE_DATA(4, GLenum, CR_GETATTACHEDOBJECTSARB_EXTEND_OPCODE);
479 WRITE_DATA(8, VBoxGLhandleARB, containerObj);
480 WRITE_DATA(12, GLsizei, maxCount);
481 WRITE_NETWORK_POINTER(16, (void *) count);
482 WRITE_NETWORK_POINTER(24, (void *) writeback);
483 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
484 CR_UNLOCK_PACKER_CONTEXT(pc);
485}
486
487void PACK_APIENTRY crPackGetInfoLogARB(VBoxGLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog, int * writeback)
488{
489 CR_GET_PACKER_CONTEXT(pc);
490 unsigned char *data_ptr;
491 (void) pc;
492 CR_GET_BUFFERED_POINTER(pc, 32);
493 WRITE_DATA(0, GLint, 32);
494 WRITE_DATA(4, GLenum, CR_GETINFOLOGARB_EXTEND_OPCODE);
495 WRITE_DATA(8, VBoxGLhandleARB, obj);
496 WRITE_DATA(12, GLsizei, maxLength);
497 WRITE_NETWORK_POINTER(16, (void *) length);
498 WRITE_NETWORK_POINTER(24, (void *) writeback);
499 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
500 CR_UNLOCK_PACKER_CONTEXT(pc);
501}
502
503void PACK_APIENTRY crPackGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, char * infoLog, int * writeback)
504{
505 CR_GET_PACKER_CONTEXT(pc);
506 unsigned char *data_ptr;
507 (void) pc;
508 (void) infoLog;
509 CR_GET_BUFFERED_POINTER(pc, 32);
510 WRITE_DATA(0, GLint, 32);
511 WRITE_DATA(4, GLenum, CR_GETPROGRAMINFOLOG_EXTEND_OPCODE);
512 WRITE_DATA(8, GLuint, program);
513 WRITE_DATA(12, GLsizei, bufSize);
514 WRITE_NETWORK_POINTER(16, (void *) length);
515 WRITE_NETWORK_POINTER(24, (void *) writeback);
516 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
517 CR_UNLOCK_PACKER_CONTEXT(pc);
518}
519
520void PACK_APIENTRY crPackGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, char * infoLog, int * writeback)
521{
522 CR_GET_PACKER_CONTEXT(pc);
523 unsigned char *data_ptr;
524 (void) pc;
525 (void) infoLog;
526 CR_GET_BUFFERED_POINTER(pc, 32);
527 WRITE_DATA(0, GLint, 32);
528 WRITE_DATA(4, GLenum, CR_GETSHADERINFOLOG_EXTEND_OPCODE);
529 WRITE_DATA(8, GLuint, shader);
530 WRITE_DATA(12, GLsizei, bufSize);
531 WRITE_NETWORK_POINTER(16, (void *) length);
532 WRITE_NETWORK_POINTER(24, (void *) writeback);
533 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
534 CR_UNLOCK_PACKER_CONTEXT(pc);
535}
536
537void PACK_APIENTRY crPackGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei * length, char * source, int * writeback)
538{
539 CR_GET_PACKER_CONTEXT(pc);
540 unsigned char *data_ptr;
541 (void) pc;
542 (void) source;
543 CR_GET_BUFFERED_POINTER(pc, 32);
544 WRITE_DATA(0, GLint, 32);
545 WRITE_DATA(4, GLenum, CR_GETSHADERSOURCE_EXTEND_OPCODE);
546 WRITE_DATA(8, GLuint, shader);
547 WRITE_DATA(12, GLsizei, bufSize);
548 WRITE_NETWORK_POINTER(16, (void *) length);
549 WRITE_NETWORK_POINTER(24, (void *) writeback);
550 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
551 CR_UNLOCK_PACKER_CONTEXT(pc);
552}
553
554void PACK_APIENTRY crPackGetUniformsLocations(GLuint program, GLsizei maxcbData, GLsizei * cbData, GLvoid * pData, int * writeback)
555{
556 CR_GET_PACKER_CONTEXT(pc);
557 unsigned char *data_ptr;
558 (void) pData;
559 CR_GET_BUFFERED_POINTER(pc, 32);
560 WRITE_DATA(0, GLint, 32);
561 WRITE_DATA(4, GLenum, CR_GETUNIFORMSLOCATIONS_EXTEND_OPCODE);
562 WRITE_DATA(8, GLuint, program);
563 WRITE_DATA(12, GLsizei, maxcbData);
564 WRITE_NETWORK_POINTER(16, (void *) cbData);
565 WRITE_NETWORK_POINTER(24, (void *) writeback);
566 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
567 CR_UNLOCK_PACKER_CONTEXT(pc);
568}
569
570void PACK_APIENTRY crPackGetAttribsLocations(GLuint program, GLsizei maxcbData, GLsizei * cbData, GLvoid * pData, int * writeback)
571{
572 CR_GET_PACKER_CONTEXT(pc);
573 unsigned char *data_ptr;
574 (void) pData;
575 CR_GET_BUFFERED_POINTER(pc, 32);
576 WRITE_DATA(0, GLint, 32);
577 WRITE_DATA(4, GLenum, CR_GETATTRIBSLOCATIONS_EXTEND_OPCODE);
578 WRITE_DATA(8, GLuint, program);
579 WRITE_DATA(12, GLsizei, maxcbData);
580 WRITE_NETWORK_POINTER(16, (void *) cbData);
581 WRITE_NETWORK_POINTER(24, (void *) writeback);
582 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
583 CR_UNLOCK_PACKER_CONTEXT(pc);
584}
585
586void PACK_APIENTRY crPackGetAttribLocation(GLuint program, const char * name, GLint * return_value, int * writeback)
587{
588 CR_GET_PACKER_CONTEXT(pc);
589 unsigned char *data_ptr;
590 int cbName = crStrlen(name)+1;
591 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(program)+cbName*sizeof(*name)+16;
592
593 CR_GET_BUFFERED_POINTER(pc, packet_length);
594 WRITE_DATA_AI(int, packet_length);
595 WRITE_DATA_AI(GLenum, CR_GETATTRIBLOCATION_EXTEND_OPCODE);
596 WRITE_DATA_AI(GLuint, program);
597 crMemcpy(data_ptr, name, cbName*sizeof(*name));
598 data_ptr += cbName*sizeof(*name);
599 WRITE_NETWORK_POINTER(0, (void *) return_value);
600 WRITE_NETWORK_POINTER(8, (void *) writeback);
601 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
602 CR_UNLOCK_PACKER_CONTEXT(pc);
603}
604
605void PACK_APIENTRY crPackGetUniformLocation(GLuint program, const char * name, GLint * return_value, int * writeback)
606{
607 CR_GET_PACKER_CONTEXT(pc);
608 unsigned char *data_ptr;
609 int cbName = crStrlen(name)+1;
610 int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(program)+cbName*sizeof(*name)+16;
611
612 CR_GET_BUFFERED_POINTER(pc, packet_length);
613 WRITE_DATA_AI(int, packet_length);
614 WRITE_DATA_AI(GLenum, CR_GETUNIFORMLOCATION_EXTEND_OPCODE);
615 WRITE_DATA_AI(GLuint, program);
616 crMemcpy(data_ptr, name, cbName*sizeof(*name));
617 data_ptr += cbName*sizeof(*name);
618 WRITE_NETWORK_POINTER(0, (void *) return_value);
619 WRITE_NETWORK_POINTER(8, (void *) writeback);
620 WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
621 CR_UNLOCK_PACKER_CONTEXT(pc);
622}
623
624void PACK_APIENTRY crPackBindAttribLocationSWAP(GLuint program, GLuint index, const char *name)
625{
626 CR_GET_PACKER_CONTEXT(pc);
627 (void)program;
628 (void)index;
629 (void)name;
630 (void)pc;
631 crError ("No swap version");
632}
633
634void PACK_APIENTRY crPackShaderSourceSWAP(GLuint shader, GLsizei count, const char **string, const GLint *length)
635{
636 CR_GET_PACKER_CONTEXT(pc);
637 (void)shader;
638 (void)count;
639 (void)string;
640 (void)length;
641 (void)pc;
642 crError ("No swap version");
643}
644
645void PACK_APIENTRY crPackUniform1fvSWAP(GLint location, GLsizei count, const GLfloat *value)
646{
647 CR_GET_PACKER_CONTEXT(pc);
648 (void)location;
649 (void)count;
650 (void)value;
651 (void)pc;
652 crError ("No swap version");
653}
654
655
656void PACK_APIENTRY crPackUniform1ivSWAP(GLint location, GLsizei count, const GLint *value)
657{
658 CR_GET_PACKER_CONTEXT(pc);
659 (void)location;
660 (void)count;
661 (void)value;
662 (void)pc;
663 crError ("No swap version");
664}
665
666void PACK_APIENTRY crPackUniform2fvSWAP(GLint location, GLsizei count, const GLfloat *value)
667{
668 CR_GET_PACKER_CONTEXT(pc);
669 (void)location;
670 (void)count;
671 (void)value;
672 (void)pc;
673 crError ("No swap version");
674}
675
676void PACK_APIENTRY crPackUniform2ivSWAP(GLint location, GLsizei count, const GLint * value)
677{
678 CR_GET_PACKER_CONTEXT(pc);
679 (void)location;
680 (void)count;
681 (void)value;
682 (void)pc;
683 crError ("No swap version");
684}
685
686void PACK_APIENTRY crPackUniform3fvSWAP(GLint location, GLsizei count, const GLfloat *value)
687{
688 CR_GET_PACKER_CONTEXT(pc);
689 (void)location;
690 (void)count;
691 (void)value;
692 (void)pc;
693 crError ("No swap version");
694}
695
696void PACK_APIENTRY crPackUniform3ivSWAP(GLint location, GLsizei count, const GLint *value)
697{
698 CR_GET_PACKER_CONTEXT(pc);
699 (void)location;
700 (void)count;
701 (void)value;
702 (void)pc;
703 crError ("No swap version");
704}
705
706void PACK_APIENTRY crPackUniform4fvSWAP(GLint location, GLsizei count, const GLfloat *value)
707{
708 CR_GET_PACKER_CONTEXT(pc);
709 (void)location;
710 (void)count;
711 (void)value;
712 (void)pc;
713 crError ("No swap version");
714}
715
716void PACK_APIENTRY crPackUniform4ivSWAP(GLint location, GLsizei count, const GLint *value)
717{
718 CR_GET_PACKER_CONTEXT(pc);
719 (void)location;
720 (void)count;
721 (void)value;
722 (void)pc;
723 crError ("No swap version");
724}
725
726void PACK_APIENTRY crPackUniformMatrix2fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
727{
728 CR_GET_PACKER_CONTEXT(pc);
729 (void)location;
730 (void)count;
731 (void)transpose;
732 (void)value;
733 (void)pc;
734 crError ("No swap version");
735}
736
737void PACK_APIENTRY crPackUniformMatrix3fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
738{
739 CR_GET_PACKER_CONTEXT(pc);
740 (void)location;
741 (void)count;
742 (void)transpose;
743 (void)value;
744 (void)pc;
745 crError ("No swap version");
746}
747
748void PACK_APIENTRY crPackUniformMatrix4fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
749{
750 CR_GET_PACKER_CONTEXT(pc);
751 (void)location;
752 (void)count;
753 (void)transpose;
754 (void)value;
755 (void)pc;
756 crError ("No swap version");
757}
758
759void PACK_APIENTRY crPackUniformMatrix2x3fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
760{
761 CR_GET_PACKER_CONTEXT(pc);
762 (void)location;
763 (void)count;
764 (void)transpose;
765 (void)value;
766 (void)pc;
767 crError ("No swap version");
768}
769
770void PACK_APIENTRY crPackUniformMatrix3x2fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
771{
772 CR_GET_PACKER_CONTEXT(pc);
773 (void)location;
774 (void)count;
775 (void)transpose;
776 (void)value;
777 (void)pc;
778 crError ("No swap version");
779}
780
781void PACK_APIENTRY crPackUniformMatrix2x4fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
782{
783 CR_GET_PACKER_CONTEXT(pc);
784 (void)location;
785 (void)count;
786 (void)transpose;
787 (void)value;
788 (void)pc;
789 crError ("No swap version");
790}
791
792void PACK_APIENTRY crPackUniformMatrix4x2fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
793{
794 CR_GET_PACKER_CONTEXT(pc);
795 (void)location;
796 (void)count;
797 (void)transpose;
798 (void)value;
799 (void)pc;
800 crError ("No swap version");
801}
802
803void PACK_APIENTRY crPackUniformMatrix3x4fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
804{
805 CR_GET_PACKER_CONTEXT(pc);
806 (void)location;
807 (void)count;
808 (void)transpose;
809 (void)value;
810 (void)pc;
811 crError ("No swap version");
812}
813
814void PACK_APIENTRY crPackUniformMatrix4x3fvSWAP(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
815{
816 CR_GET_PACKER_CONTEXT(pc);
817 (void)location;
818 (void)count;
819 (void)transpose;
820 (void)value;
821 (void)pc;
822 crError ("No swap version");
823}
824
825void PACK_APIENTRY crPackDrawBuffersSWAP(GLsizei n, const GLenum *bufs)
826{
827 CR_GET_PACKER_CONTEXT(pc);
828 (void)n;
829 (void)bufs;
830 (void)pc;
831 crError ("No swap version");
832}
833
834void PACK_APIENTRY crPackGetAttribLocationSWAP(GLuint program, const char * name, GLint * return_value, int * writeback)
835{
836 CR_GET_PACKER_CONTEXT(pc);
837 (void)program;
838 (void)name;
839 (void)return_value;
840 (void)writeback;
841 (void)pc;
842 crError ("No swap version");
843}
844
845void PACK_APIENTRY crPackGetUniformLocationSWAP(GLuint program, const char * name, GLint * return_value, int * writeback)
846{
847 CR_GET_PACKER_CONTEXT(pc);
848 (void)program;
849 (void)name;
850 (void)return_value;
851 (void)writeback;
852 (void)pc;
853 crError ("No swap version");
854}
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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