Changeset 55014 in vbox for trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c
- Timestamp:
- Mar 30, 2015 5:35:12 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 99289
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c
r50041 r55014 166 166 } 167 167 #endif /* #ifdef CR_OPENGL_VERSION_2_0 */ 168 169 /* XXXX Note: shared/separate Program ID numbers aren't totally implemented! */ 170 GLuint crServerTranslateProgramID( GLuint id ) 171 { 172 if (!cr_server.sharedPrograms && id) { 173 int client = cr_server.curClient->number; 174 return id + client * 100000; 175 } 176 return id; 177 } 178 179 180 void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteProgramsARB(GLsizei n, const GLuint * programs) 181 { 182 GLuint *pLocalProgs = (GLuint *) crAlloc(n * sizeof(GLuint)); 183 GLint i; 184 if (!pLocalProgs) { 185 crError("crServerDispatchDeleteProgramsARB: out of memory"); 186 return; 187 } 188 for (i = 0; i < n; i++) { 189 pLocalProgs[i] = crServerTranslateProgramID(programs[i]); 190 } 191 crStateDeleteProgramsARB(n, pLocalProgs); 192 cr_server.head_spu->dispatch_table.DeleteProgramsARB(n, pLocalProgs); 193 crFree(pLocalProgs); 194 } 195 196 197 /*@todo will fail for progs loaded from snapshot */ 198 GLboolean SERVER_DISPATCH_APIENTRY crServerDispatchIsProgramARB( GLuint program ) 199 { 200 GLboolean retval; 201 program = crServerTranslateProgramID(program); 202 retval = cr_server.head_spu->dispatch_table.IsProgramARB( program ); 203 crServerReturnValue( &retval, sizeof(retval) ); 204 return retval; /* WILL PROBABLY BE IGNORED */ 205 } 206 207 208 GLboolean SERVER_DISPATCH_APIENTRY 209 crServerDispatchAreProgramsResidentNV(GLsizei n, const GLuint *programs, 210 GLboolean *residences) 211 { 212 GLboolean retval; 213 GLboolean *res = (GLboolean *) crAlloc(n * sizeof(GLboolean)); 214 GLsizei i; 215 216 (void) residences; 217 218 if (!cr_server.sharedTextureObjects) { 219 GLuint *programs2 = (GLuint *) crAlloc(n * sizeof(GLuint)); 220 for (i = 0; i < n; i++) 221 programs2[i] = crServerTranslateProgramID(programs[i]); 222 retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs2, res); 223 crFree(programs2); 224 } 225 else { 226 retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs, res); 227 } 228 229 crServerReturnValue(res, n * sizeof(GLboolean)); 230 crFree(res); 231 232 return retval; /* WILL PROBABLY BE IGNORED */ 233 } 234
Note:
See TracChangeset
for help on using the changeset viewer.