diff options
Diffstat (limited to 'src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c')
| -rw-r--r-- | src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c index c11d2d00..25d4b91e 100644 --- a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c +++ b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c @@ -5,7 +5,7 @@ */ /* - * Copyright (C) 2009 Oracle Corporation + * Copyright (C) 2009-2012 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -29,13 +29,29 @@ void SERVER_DISPATCH_APIENTRY crServerDispatchShaderSource(GLuint shader, GLsizei count, const char ** string, const GLint * length) { /*@todo?crStateShaderSource(shader...);*/ +#ifdef DEBUG_misha + GLenum err = cr_server.head_spu->dispatch_table.GetError(); +#endif cr_server.head_spu->dispatch_table.ShaderSource(crStateGetShaderHWID(shader), count, string, length); +#ifdef DEBUG_misha + err = cr_server.head_spu->dispatch_table.GetError(); + CRASSERT(err == GL_NO_ERROR); +#endif + CR_SERVER_DUMP_SHADER_SOURCE(shader); } void SERVER_DISPATCH_APIENTRY crServerDispatchCompileShader(GLuint shader) { +#ifdef DEBUG_misha + GLint iCompileStatus = GL_FALSE; +#endif crStateCompileShader(shader); cr_server.head_spu->dispatch_table.CompileShader(crStateGetShaderHWID(shader)); +#ifdef DEBUG_misha + cr_server.head_spu->dispatch_table.GetShaderiv(crStateGetShaderHWID(shader), GL_COMPILE_STATUS, &iCompileStatus); + Assert(iCompileStatus == GL_TRUE); +#endif + CR_SERVER_DUMP_COMPILE_SHADER(shader); } void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteShader(GLuint shader) @@ -64,6 +80,7 @@ void SERVER_DISPATCH_APIENTRY crServerDispatchLinkProgram(GLuint program) { crStateLinkProgram(program); cr_server.head_spu->dispatch_table.LinkProgram(crStateGetProgramHWID(program)); + CR_SERVER_DUMP_LINK_PROGRAM(program); } void SERVER_DISPATCH_APIENTRY crServerDispatchUseProgram(GLuint program) @@ -94,23 +111,14 @@ void SERVER_DISPATCH_APIENTRY crServerDispatchBindAttribLocation(GLuint program, cr_server.head_spu->dispatch_table.BindAttribLocation(crStateGetProgramHWID(program), index, name); } -void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteObjectARB(GLhandleARB obj) +void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteObjectARB(VBoxGLhandleARB obj) { - GLuint hwid = crStateGetProgramHWID(obj); - - if (!hwid) - { - hwid = crStateGetShaderHWID(obj); - CRASSERT(hwid); - crStateDeleteShader(obj); - } - else - { - crStateDeleteProgram(obj); - } + GLuint hwid = crStateDeleteObjectARB(obj); if (hwid) cr_server.head_spu->dispatch_table.DeleteObjectARB(hwid); + else + crWarning("zero hwid for object %d", obj); } GLint SERVER_DISPATCH_APIENTRY crServerDispatchGetAttribLocation( GLuint program, const char * name ) @@ -121,9 +129,9 @@ GLint SERVER_DISPATCH_APIENTRY crServerDispatchGetAttribLocation( GLuint program return retval; /* WILL PROBABLY BE IGNORED */ } -GLhandleARB SERVER_DISPATCH_APIENTRY crServerDispatchGetHandleARB( GLenum pname ) +VBoxGLhandleARB SERVER_DISPATCH_APIENTRY crServerDispatchGetHandleARB( GLenum pname ) { - GLhandleARB retval; + VBoxGLhandleARB retval; retval = cr_server.head_spu->dispatch_table.GetHandleARB(pname); if (pname==GL_PROGRAM_OBJECT_ARB) { @@ -141,4 +149,19 @@ GLint SERVER_DISPATCH_APIENTRY crServerDispatchGetUniformLocation(GLuint program return retval; /* WILL PROBABLY BE IGNORED */ } +void SERVER_DISPATCH_APIENTRY crServerDispatchGetProgramiv( GLuint program, GLenum pname, GLint * params ) +{ + GLint local_params[1]; + (void) params; + cr_server.head_spu->dispatch_table.GetProgramiv(crStateGetProgramHWID(program), pname, local_params); + crServerReturnValue( &(local_params[0]), 1*sizeof(GLint) ); +} + +void SERVER_DISPATCH_APIENTRY crServerDispatchGetShaderiv( GLuint shader, GLenum pname, GLint * params ) +{ + GLint local_params[1]; + (void) params; + cr_server.head_spu->dispatch_table.GetShaderiv( crStateGetShaderHWID(shader), pname, local_params ); + crServerReturnValue( &(local_params[0]), 1*sizeof(GLint) ); +} #endif /* #ifdef CR_OPENGL_VERSION_2_0 */ |
