VirtualBox

Ignore:
Timestamp:
Mar 30, 2015 5:35:12 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
99289
Message:

Host 3D: crServer: move things in place: shader-related stuff from server_lists.c -> server_glsl.c.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c

    r50041 r55014  
    166166}
    167167#endif /* #ifdef CR_OPENGL_VERSION_2_0 */
     168
     169/* XXXX Note: shared/separate Program ID numbers aren't totally implemented! */
     170GLuint 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
     180void 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 */
     198GLboolean 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
     208GLboolean SERVER_DISPATCH_APIENTRY
     209crServerDispatchAreProgramsResidentNV(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.

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