hostsupport/hostopengles20/src/shader.c
branchbug235_bringup_0
changeset 76 24381b61de5c
parent 55 09263774e342
equal deleted inserted replaced
75:82d8da1d79c7 76:24381b61de5c
    31 #include "context.h"
    31 #include "context.h"
    32 #include <string.h>
    32 #include <string.h>
    33 
    33 
    34 DGLShader* DGLShader_create(GLuint name)
    34 DGLShader* DGLShader_create(GLuint name)
    35 {
    35 {
    36 	DGLShader* shader = malloc(sizeof(DGLShader));
    36 	DGLShader* shader = (DGLShader*)malloc(sizeof(DGLShader));
    37 	if(shader == NULL)
    37 	if(shader == NULL)
    38 	{
    38 	{
    39 		return NULL;
    39 		return NULL;
    40 	}
    40 	}
    41 
    41 
   253 		if (buffersize < s - prev) {
   253 		if (buffersize < s - prev) {
   254 			buffersize = s - prev;
   254 			buffersize = s - prev;
   255 			if (buffer) {
   255 			if (buffer) {
   256 				free(buffer);
   256 				free(buffer);
   257 			}
   257 			}
   258 			buffer = malloc(buffersize + 1);
   258 			buffer = (char*)malloc(buffersize + 1);
   259 		}
   259 		}
   260 		memcpy(buffer, prev, s - prev);
   260 		memcpy(buffer, prev, s - prev);
   261 		buffer[s - prev] = 0;
   261 		buffer[s - prev] = 0;
   262 		prev = s;
   262 		prev = s;
   263 	} else {
   263 	} else {
   267 		if (buffersize < e - s) {
   267 		if (buffersize < e - s) {
   268 			buffersize = e - s;
   268 			buffersize = e - s;
   269 			if (buffer) {
   269 			if (buffer) {
   270 				free(buffer);
   270 				free(buffer);
   271 			}
   271 			}
   272 			buffer = malloc(buffersize + 1);
   272 			buffer = (char*)malloc(buffersize + 1);
   273 		}
   273 		}
   274 		memcpy(buffer, s, e - s);
   274 		memcpy(buffer, s, e - s);
   275 		buffer[e - s] = 0;
   275 		buffer[e - s] = 0;
   276 	}
   276 	}
   277     return buffer;
   277     return buffer;
   297 		char *patched;
   297 		char *patched;
   298 		const char *p;
   298 		const char *p;
   299 		
   299 		
   300 		*patched_len = 0;
   300 		*patched_len = 0;
   301 		buffer_size = len;
   301 		buffer_size = len;
   302 		patched = malloc(buffer_size + 1);
   302 		patched = (char*)malloc(buffer_size + 1);
   303 		if(patched == NULL)	{
   303 		if(patched == NULL)	{
   304 			return NULL;
   304 			return NULL;
   305 		}
   305 		}
   306 
   306 
   307 		p = opengl_strtok(source, &len);
   307 		p = opengl_strtok(source, &len);
   340 				} 
   340 				} 
   341 #endif // !DGLES2_ALLOW_GLSL_110
   341 #endif // !DGLES2_ALLOW_GLSL_110
   342 				tok_len = strlen(p);
   342 				tok_len = strlen(p);
   343 				if(*patched_len + tok_len > buffer_size) {
   343 				if(*patched_len + tok_len > buffer_size) {
   344 					buffer_size *= 2;
   344 					buffer_size *= 2;
   345 					patched = realloc(patched, buffer_size + 1);
   345 					patched = (char*)realloc(patched, buffer_size + 1);
   346 					if(patched == NULL) {
   346 					if(patched == NULL) {
   347 						return NULL;
   347 						return NULL;
   348 					}
   348 					}
   349 				}
   349 				}
   350 				memcpy(patched + *patched_len, p, tok_len);
   350 				memcpy(patched + *patched_len, p, tok_len);
   355 #ifndef DGLES2_ALLOW_GLSL_110
   355 #ifndef DGLES2_ALLOW_GLSL_110
   356 		/* add version directive is one was not found */
   356 		/* add version directive is one was not found */
   357 		if (!version_found) {
   357 		if (!version_found) {
   358 			char* new_patched;
   358 			char* new_patched;
   359 			*patched_len += strlen("#version 120\n");
   359 			*patched_len += strlen("#version 120\n");
   360 			new_patched = malloc(*patched_len + 1);
   360 			new_patched = (char*)malloc(*patched_len + 1);
   361 			if (new_patched == NULL) {
   361 			if (new_patched == NULL) {
   362 				return NULL;
   362 				return NULL;
   363 			}
   363 			}
   364 			strcpy(new_patched, "#version 120\n");
   364 			strcpy(new_patched, "#version 120\n");
   365 			strcat(new_patched, patched);
   365 			strcat(new_patched, patched);
   403 		else
   403 		else
   404 			Dprintf("%s", string[i]);
   404 			Dprintf("%s", string[i]);
   405 	}
   405 	}
   406 	Dprintf("---END-ORIGINAL-SHADER---\n");
   406 	Dprintf("---END-ORIGINAL-SHADER---\n");
   407 #endif // !NDEBUG
   407 #endif // !NDEBUG
   408 	char** string_dgl = malloc(sizeof(char*)*count);
   408 	char** string_dgl = (char**)malloc(sizeof(char*)*count);
   409 	GLint* length_dgl = malloc(sizeof(GLint)*count);
   409 	GLint* length_dgl = (GLint*)malloc(sizeof(GLint)*count);
   410 
   410 
   411 	// Remove the non OpenGL 2.x compilant keywords.
   411 	// Remove the non OpenGL 2.x compilant keywords.
   412 	for(unsigned i = 0; i < count; ++i)
   412 	for(unsigned i = 0; i < count; ++i)
   413 	{
   413 	{
   414 		static const char* removables[] =
   414 		static const char* removables[] =
   421 			"mediump",
   421 			"mediump",
   422 			"precision"
   422 			"precision"
   423 		};
   423 		};
   424 
   424 
   425 		length_dgl[i] = length ? length[i] : strlen(string[i]);
   425 		length_dgl[i] = length ? length[i] : strlen(string[i]);
   426 		string_dgl[i] = malloc(length_dgl[i] + 1);
   426 		string_dgl[i] = (char*)malloc(length_dgl[i] + 1);
   427 		memcpy(string_dgl[i], string[i], length_dgl[i]);
   427 		memcpy(string_dgl[i], string[i], length_dgl[i]);
   428 		string_dgl[i][length_dgl[i]] = 0;
   428 		string_dgl[i][length_dgl[i]] = 0;
   429 
   429 
   430 		for(unsigned j = 0; j < sizeof(removables)/sizeof(removables[0]); ++j)
   430 		for(unsigned j = 0; j < sizeof(removables)/sizeof(removables[0]); ++j)
   431 		{
   431 		{
   485 				{
   485 				{
   486 					total_len += len;
   486 					total_len += len;
   487 
   487 
   488 					if(source == NULL)
   488 					if(source == NULL)
   489 					{
   489 					{
   490 						source = malloc(total_len + 1);
   490 						source = (char*)malloc(total_len + 1);
   491 						if(source == NULL)
   491 						if(source == NULL)
   492 						{
   492 						{
   493 							DGLES2_ERROR(GL_OUT_OF_MEMORY);
   493 							DGLES2_ERROR(GL_OUT_OF_MEMORY);
   494 						}
   494 						}
   495 						source[0] = 0;
   495 						source[0] = 0;
   496 					}
   496 					}
   497 					else
   497 					else
   498 					{
   498 					{
   499 						source = realloc(source, total_len + 1);
   499 						source = (char*)realloc(source, total_len + 1);
   500 						if(source == NULL)
   500 						if(source == NULL)
   501 						{
   501 						{
   502 							DGLES2_ERROR(GL_OUT_OF_MEMORY);
   502 							DGLES2_ERROR(GL_OUT_OF_MEMORY);
   503 						}
   503 						}
   504 					}
   504 					}