MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / checkBufferColor

Function checkBufferColor

server/fakerut.cpp:159–192  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

157
158
159unsigned int checkBufferColor(void)
160{
161 int i, viewport[4], ps = 3; unsigned int ret = 0;
162 unsigned char *buf = NULL;
163
164 try
165 {
166 viewport[0] = viewport[1] = viewport[2] = viewport[3] = 0;
167 glGetIntegerv(GL_VIEWPORT, viewport);
168 if(viewport[2] < 1 || viewport[3] < 1)
169 THROW("Invalid viewport dimensions");
170
171 if((buf = (unsigned char *)malloc(viewport[2] * viewport[3] * ps)) == NULL)
172 THROW("Could not allocate buffer");
173 memset(buf, 128, viewport[2] * viewport[3] * ps);
174
175 glPixelStorei(GL_PACK_ALIGNMENT, 1);
176 glReadPixels(0, 0, viewport[2], viewport[3], GL_RGB, GL_UNSIGNED_BYTE,
177 buf);
178 for(i = 3; i < viewport[2] * viewport[3] * ps; i += ps)
179 {
180 if(buf[i] != buf[0] || buf[i + 1] != buf[1] || buf[i + 2] != buf[2])
181 THROW("Bogus data read back");
182 }
183 ret = buf[0] | (buf[1] << 8) | (buf[2] << 16);
184 free(buf);
185 return ret;
186 }
187 catch(...)
188 {
189 free(buf);
190 throw;
191 }
192}
193
194
195void checkWindowColor(Display *dpy, Window win, unsigned int color,

Callers 2

doubleBufferTestFunction · 0.70
stereoTestFunction · 0.70

Calls 2

glGetIntegervFunction · 0.85
glReadPixelsFunction · 0.85

Tested by

no test coverage detected