VirtualBox

source: vbox/trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_getshaders.c@ 20509

Last change on this file since 20509 was 20509, checked in by vboxsync, 15 years ago

OSE headers

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 5.8 KB
Line 
1/* $Id: packspu_getshaders.c 20509 2009-06-12 12:51:06Z vboxsync $ */
2
3/** @file
4 * VBox OpenGL DRI driver functions
5 */
6
7/*
8 * Copyright (C) 2009 Sun Microsystems, Inc.
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.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 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
19 * Clara, CA 95054 USA or visit http://www.sun.com if you need
20 * additional information or have any questions.
21 */
22
23#include "packspu.h"
24#include "cr_packfunctions.h"
25#include "cr_net.h"
26#include "packspu_proto.h"
27#include "cr_mem.h"
28
29/*@todo combine with the one from server_getshaders.c*/
30typedef struct _crGetActive_t
31{
32 GLsizei length;
33 GLint size;
34 GLenum type;
35} crGetActive_t;
36
37void PACKSPU_APIENTRY packspu_GetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, char * name)
38{
39 GET_THREAD(thread);
40 int writeback = 1;
41 crGetActive_t *pLocal;
42
43 if (!size || !type || !name) return;
44
45 pLocal = (crGetActive_t*) crAlloc(bufSize+sizeof(crGetActive_t));
46 if (!pLocal) return;
47
48 crPackGetActiveAttrib(program, index, bufSize, (GLsizei*)pLocal, NULL, NULL, NULL, &writeback);
49
50 packspuFlush((void *) thread);
51 while (writeback)
52 crNetRecv();
53
54 if (length) *length = pLocal->length;
55 *size = pLocal->size;
56 *type = pLocal->type;
57 crMemcpy(name, (char*)&pLocal[1], pLocal->length+1);
58 crFree(pLocal);
59}
60
61void PACKSPU_APIENTRY packspu_GetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, char * name)
62{
63 GET_THREAD(thread);
64 int writeback = 1;
65 crGetActive_t *pLocal;
66
67 if (!size || !type || !name) return;
68
69 pLocal = (crGetActive_t*) crAlloc(bufSize+sizeof(crGetActive_t));
70 if (!pLocal) return;
71
72 crPackGetActiveUniform(program, index, bufSize, (GLsizei*)pLocal, NULL, NULL, NULL, &writeback);
73
74 packspuFlush((void *) thread);
75 while (writeback)
76 crNetRecv();
77
78 if (length) *length = pLocal->length;
79 *size = pLocal->size;
80 *type = pLocal->type;
81 crMemcpy(name, &pLocal[1], pLocal->length+1);
82 crFree(pLocal);
83}
84
85void PACKSPU_APIENTRY packspu_GetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders)
86{
87 GET_THREAD(thread);
88 int writeback = 1;
89 GLsizei *pLocal;
90
91 if (!shaders) return;
92
93 pLocal = (GLsizei*) crAlloc(maxCount*sizeof(GLuint)+sizeof(GLsizei));
94 if (!pLocal) return;
95
96 crPackGetAttachedShaders(program, maxCount, pLocal, NULL, &writeback);
97
98 packspuFlush((void *) thread);
99 while (writeback)
100 crNetRecv();
101
102 if (count) *count=*pLocal;
103 crMemcpy(shaders, &pLocal[1], *pLocal*sizeof(GLuint));
104 crFree(pLocal);
105}
106
107void PACKSPU_APIENTRY packspu_GetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj)
108{
109 GET_THREAD(thread);
110 int writeback = 1;
111 GLsizei *pLocal;
112
113 if (!obj) return;
114
115 pLocal = (GLsizei*) crAlloc(maxCount*sizeof(GLhandleARB)+sizeof(GLsizei));
116 if (!pLocal) return;
117
118 crPackGetAttachedObjectsARB(containerObj, maxCount, pLocal, NULL, &writeback);
119
120 packspuFlush((void *) thread);
121 while (writeback)
122 crNetRecv();
123
124 if (count) *count=*pLocal;
125 crMemcpy(obj, &pLocal[1], *pLocal*sizeof(GLhandleARB));
126 crFree(pLocal);
127}
128
129void PACKSPU_APIENTRY packspu_GetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
130{
131 GET_THREAD(thread);
132 int writeback = 1;
133 GLsizei *pLocal;
134
135 if (!infoLog) return;
136
137 pLocal = (GLsizei*) crAlloc(maxLength+sizeof(GLsizei));
138 if (!pLocal) return;
139
140 crPackGetInfoLogARB(obj, maxLength, pLocal, NULL, &writeback);
141
142 packspuFlush((void *) thread);
143 while (writeback)
144 crNetRecv();
145
146 if (length) *length=*pLocal;
147 crMemcpy(infoLog, &pLocal[1], (*pLocal)+1);
148 crFree(pLocal);
149}
150
151void PACKSPU_APIENTRY packspu_GetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, char * infoLog)
152{
153 GET_THREAD(thread);
154 int writeback = 1;
155 GLsizei *pLocal;
156
157 if (!infoLog) return;
158
159 pLocal = (GLsizei*) crAlloc(bufSize+sizeof(GLsizei));
160 if (!pLocal) return;
161
162 crPackGetProgramInfoLog(program, bufSize, pLocal, NULL, &writeback);
163
164 packspuFlush((void *) thread);
165 while (writeback)
166 crNetRecv();
167
168 if (length) *length=*pLocal;
169 crMemcpy(infoLog, &pLocal[1], (*pLocal)+1);
170 crFree(pLocal);
171}
172
173void PACKSPU_APIENTRY packspu_GetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, char * infoLog)
174{
175 GET_THREAD(thread);
176 int writeback = 1;
177 GLsizei *pLocal;
178
179 if (!infoLog) return;
180
181 pLocal = (GLsizei*) crAlloc(bufSize+sizeof(GLsizei));
182 if (!pLocal) return;
183
184 crPackGetShaderInfoLog(shader, bufSize, pLocal, NULL, &writeback);
185
186 packspuFlush((void *) thread);
187 while (writeback)
188 crNetRecv();
189
190 if (length) *length=*pLocal;
191 crMemcpy(infoLog, &pLocal[1], (*pLocal)+1);
192 crFree(pLocal);
193}
194
195void PACKSPU_APIENTRY packspu_GetShaderSource(GLuint shader, GLsizei bufSize, GLsizei * length, char * source)
196{
197 GET_THREAD(thread);
198 int writeback = 1;
199 GLsizei *pLocal;
200
201 if (!source) return;
202
203 pLocal = (GLsizei*) crAlloc(bufSize+sizeof(GLsizei));
204 if (!pLocal) return;
205
206 crPackGetShaderSource(shader, bufSize, pLocal, NULL, &writeback);
207
208 packspuFlush((void *) thread);
209 while (writeback)
210 crNetRecv();
211
212 if (length) *length=*pLocal;
213 crMemcpy(source, &pLocal[1], (*pLocal)+1);
214 crFree(pLocal);
215}
Note: See TracBrowser for help on using the repository browser.

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