VirtualBox

source: vbox/trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_getstring.c@ 29583

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

crOpenGL: opengl 2.1 support

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.9 KB
Line 
1/* Copyright (c) 2001, Stanford University
2 * All rights reserved
3 *
4 * See the file LICENSE.txt for information on redistributing this software.
5 */
6
7#include "packspu.h"
8#include "cr_packfunctions.h"
9#include "state/cr_statefuncs.h"
10#include "cr_string.h"
11#include "packspu_proto.h"
12
13static GLubyte gpszExtensions[10000];
14#ifdef CR_OPENGL_VERSION_2_0
15static GLubyte gpszShadingVersion[255]="";
16#endif
17
18static void GetString(GLenum name, GLubyte *pszStr)
19{
20 GET_THREAD(thread);
21 int writeback = 1;
22
23 if (pack_spu.swap)
24 crPackGetStringSWAP(name, pszStr, &writeback);
25 else
26 crPackGetString(name, pszStr, &writeback);
27 packspuFlush( (void *) thread );
28
29 while (writeback)
30 crNetRecv();
31}
32
33static GLfloat
34GetVersionString(void)
35{
36 GLubyte return_value[100];
37 GLfloat version;
38
39 GetString(GL_VERSION, return_value);
40 CRASSERT(crStrlen((char *)return_value) < 100);
41
42 version = crStrToFloat((char *) return_value);
43 version = crStateComputeVersion(version);
44
45 return version;
46}
47
48static const GLubyte *
49GetExtensions(void)
50{
51 GLubyte return_value[10*1000];
52 const GLubyte *extensions, *ext;
53 GET_THREAD(thread);
54 int writeback = 1;
55
56 if (pack_spu.swap)
57 {
58 crPackGetStringSWAP( GL_EXTENSIONS, return_value, &writeback );
59 }
60 else
61 {
62 crPackGetString( GL_EXTENSIONS, return_value, &writeback );
63 }
64 packspuFlush( (void *) thread );
65
66 while (writeback)
67 crNetRecv();
68
69 CRASSERT(crStrlen((char *)return_value) < 10*1000);
70
71 /* OK, we got the result from the server. Now we have to
72 * intersect is with the set of extensions that Chromium understands
73 * and tack on the Chromium-specific extensions.
74 */
75 extensions = return_value;
76 ext = crStateMergeExtensions(1, &extensions);
77
78 sprintf((char*)gpszExtensions, "%s", ext);
79
80 return gpszExtensions;
81}
82
83#ifdef WINDOWS
84static bool packspuRunningUnderWine(void)
85{
86 return NULL != GetModuleHandle("wined3d.dll");
87}
88#endif
89
90const GLubyte * PACKSPU_APIENTRY packspu_GetString( GLenum name )
91{
92 GET_CONTEXT(ctx);
93
94 switch(name)
95 {
96 case GL_EXTENSIONS:
97 return GetExtensions();
98 case GL_VERSION:
99#if 0 && defined(WINDOWS)
100 if (packspuRunningUnderWine())
101 {
102 GetString(GL_REAL_VERSION, ctx->pszRealVersion);
103 return ctx->pszRealVersion;
104 }
105 else
106#endif
107 {
108 float version = GetVersionString();
109 sprintf((char*)ctx->glVersion, "%.1f Chromium %s", version, CR_VERSION_STRING);
110 return ctx->glVersion;
111 }
112 case GL_VENDOR:
113#ifdef WINDOWS
114 if (packspuRunningUnderWine())
115 {
116 GetString(GL_REAL_VENDOR, ctx->pszRealVendor);
117 return ctx->pszRealVendor;
118 }
119 else
120#endif
121 {
122 return crStateGetString(name);
123 }
124 case GL_RENDERER:
125#ifdef WINDOWS
126 if (packspuRunningUnderWine())
127 {
128 GetString(GL_REAL_RENDERER, ctx->pszRealRenderer);
129 return ctx->pszRealRenderer;
130 }
131 else
132#endif
133 {
134 return crStateGetString(name);
135 }
136
137#ifdef CR_OPENGL_VERSION_2_0
138 case GL_SHADING_LANGUAGE_VERSION:
139 GetString(GL_SHADING_LANGUAGE_VERSION, gpszShadingVersion);
140 return gpszShadingVersion;
141#endif
142#ifdef GL_CR_real_vendor_strings
143 case GL_REAL_VENDOR:
144 GetString(GL_REAL_VENDOR, ctx->pszRealVendor);
145 return ctx->pszRealVendor;
146 case GL_REAL_VERSION:
147 GetString(GL_REAL_VERSION, ctx->pszRealVersion);
148 return ctx->pszRealVersion;
149 case GL_REAL_RENDERER:
150 GetString(GL_REAL_RENDERER, ctx->pszRealRenderer);
151 return ctx->pszRealRenderer;
152#endif
153 default:
154 return crStateGetString(name);
155 }
156}
Note: See TracBrowser for help on using the repository browser.

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