Buckets:
| /* | |
| * Copyright 2014 The Emscripten Authors. All rights reserved. | |
| * Emscripten is available under two separate licenses, the MIT license and the | |
| * University of Illinois/NCSA Open Source License. Both these licenses can be | |
| * found in the LICENSE file. | |
| */ | |
| /* | |
| * GLES2 test for glTexImage2D parameters | |
| * | |
| * Original author: Jason Green <jason@transgaming.com> | |
| * | |
| */ | |
| typedef enum { | |
| TEST_STATUS_SUCCESS = 0, | |
| TEST_STATUS_FAILURE = 1 | |
| } TestStatus; | |
| /* Report success or failure (1 or 0) to Emscripten's test harness. Also, exit | |
| * with the given error code. */ | |
| static void exit_with_status(TestStatus code) { | |
| int result = (code == TEST_STATUS_SUCCESS) ? 1 : 0; | |
| REPORT_RESULT(result); | |
| exit(code); | |
| } | |
| /* Loop over all glGetError() results until GL reports GL_NO_ERROR */ | |
| static void clear_gl_errors() { | |
| GLenum err; | |
| do { | |
| err = glGetError(); | |
| } while (err != GL_NO_ERROR); | |
| } | |
| int main(int argc, char *argv[]) { | |
| TestStatus passed = TEST_STATUS_SUCCESS; | |
| SDL_Surface *screen; | |
| if (SDL_Init(SDL_INIT_VIDEO) != 0) { | |
| printf("SDL_Init failed with %s\n", SDL_GetError()); | |
| exit_with_status(TEST_STATUS_FAILURE); | |
| } | |
| SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); | |
| screen = SDL_SetVideoMode(640, 480, 16, SDL_OPENGL); | |
| if (!screen) { | |
| printf("SDL_SetVideoMode failed with %s\n", SDL_GetError()); | |
| exit_with_status(TEST_STATUS_FAILURE); | |
| } | |
| GLuint texture; | |
| glGenTextures(1, &texture); | |
| glBindTexture(GL_TEXTURE_2D, texture); | |
| glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | |
| glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | |
| // Allocate space for a 32x32 image with 4 bytes per pixel. | |
| // No need to fill it with any useful information, as these tests are | |
| // only designed to make sure glTexImage2D doesn't crash on unsupported | |
| // formats. | |
| void* pixels = malloc(4 * 32 * 32); | |
| if (pixels == NULL) { | |
| printf("Unable to allocate pixel data\n"); | |
| exit_with_status(TEST_STATUS_FAILURE); | |
| } | |
| // First, try 0xffff for the internal format - should fail | |
| glTexImage2D(GL_TEXTURE_2D, 0, 0xffff, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | |
| GLenum err = glGetError(); | |
| if (err == GL_NO_ERROR) { | |
| printf("internal format == 0xffff succeeded, but should have failed\n"); | |
| passed = TEST_STATUS_FAILURE; | |
| } | |
| clear_gl_errors(); | |
| // Try 0xffff for the format - should fail | |
| glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, 0xffff, GL_UNSIGNED_BYTE, pixels); | |
| err = glGetError(); | |
| if (err == GL_NO_ERROR) { | |
| printf("format == 0xffff succeeded, but should have failed\n"); | |
| passed = TEST_STATUS_FAILURE; | |
| } | |
| clear_gl_errors(); | |
| // Try 0xffff for the type - should fail | |
| glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, 0xffff, pixels); | |
| err = glGetError(); | |
| if (err == GL_NO_ERROR) { | |
| printf("type == 0xffff succeeded, but should have failed\n"); | |
| passed = TEST_STATUS_FAILURE; | |
| } | |
| clear_gl_errors(); | |
| // Try GL_RGBA/GL_UNSIGNED_BYTE - should succeed | |
| glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | |
| err = glGetError(); | |
| if (err != GL_NO_ERROR) { | |
| printf("GL_RGBA/GL_UNSIGNED_BYTE failed with %x, but should have succeeded\n", err); | |
| passed = TEST_STATUS_FAILURE; | |
| } | |
| clear_gl_errors(); | |
| // Clean up objects | |
| glBindTexture(GL_TEXTURE_2D, 0); | |
| glDeleteTextures(1, &texture); | |
| free(pixels); | |
| // 'screen' is freed implicitly by SDL_Quit() | |
| SDL_Quit(); | |
| exit_with_status(passed); | |
| } | |
Xet Storage Details
- Size:
- 3.81 kB
- Xet hash:
- 81f383408235d1c6b9a80d1e22a72c28575ec13974eec5817386c25b919e6760
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.