Lines Matching refs:entry

398 GLES2_EvictShader(GLES2_RenderData *data, GLES2_ShaderCacheEntry *entry)  in GLES2_EvictShader()  argument
401 if (entry->next) { in GLES2_EvictShader()
402 entry->next->prev = entry->prev; in GLES2_EvictShader()
404 if (entry->prev) { in GLES2_EvictShader()
405 entry->prev->next = entry->next; in GLES2_EvictShader()
407 if (data->shader_cache.head == entry) { in GLES2_EvictShader()
408 data->shader_cache.head = entry->next; in GLES2_EvictShader()
413 data->glDeleteShader(entry->id); in GLES2_EvictShader()
414 SDL_free(entry); in GLES2_EvictShader()
421 GLES2_ProgramCacheEntry *entry; in GLES2_CacheProgram() local
426 entry = data->program_cache.head; in GLES2_CacheProgram()
427 while (entry) { in GLES2_CacheProgram()
428 if (entry->vertex_shader == vertex && entry->fragment_shader == fragment) { in GLES2_CacheProgram()
431 entry = entry->next; in GLES2_CacheProgram()
433 if (entry) { in GLES2_CacheProgram()
434 if (data->program_cache.head != entry) { in GLES2_CacheProgram()
435 if (entry->next) { in GLES2_CacheProgram()
436 entry->next->prev = entry->prev; in GLES2_CacheProgram()
438 if (entry->prev) { in GLES2_CacheProgram()
439 entry->prev->next = entry->next; in GLES2_CacheProgram()
441 entry->prev = NULL; in GLES2_CacheProgram()
442 entry->next = data->program_cache.head; in GLES2_CacheProgram()
443 data->program_cache.head->prev = entry; in GLES2_CacheProgram()
444 data->program_cache.head = entry; in GLES2_CacheProgram()
446 return entry; in GLES2_CacheProgram()
450 entry = (GLES2_ProgramCacheEntry *)SDL_calloc(1, sizeof(GLES2_ProgramCacheEntry)); in GLES2_CacheProgram()
451 if (!entry) { in GLES2_CacheProgram()
455 entry->vertex_shader = vertex; in GLES2_CacheProgram()
456 entry->fragment_shader = fragment; in GLES2_CacheProgram()
459 entry->id = data->glCreateProgram(); in GLES2_CacheProgram()
460 data->glAttachShader(entry->id, vertex->id); in GLES2_CacheProgram()
461 data->glAttachShader(entry->id, fragment->id); in GLES2_CacheProgram()
462 data->glBindAttribLocation(entry->id, GLES2_ATTRIBUTE_POSITION, "a_position"); in GLES2_CacheProgram()
463 data->glBindAttribLocation(entry->id, GLES2_ATTRIBUTE_TEXCOORD, "a_texCoord"); in GLES2_CacheProgram()
464 data->glBindAttribLocation(entry->id, GLES2_ATTRIBUTE_ANGLE, "a_angle"); in GLES2_CacheProgram()
465 data->glBindAttribLocation(entry->id, GLES2_ATTRIBUTE_CENTER, "a_center"); in GLES2_CacheProgram()
466 data->glLinkProgram(entry->id); in GLES2_CacheProgram()
467 data->glGetProgramiv(entry->id, GL_LINK_STATUS, &linkSuccessful); in GLES2_CacheProgram()
469 data->glDeleteProgram(entry->id); in GLES2_CacheProgram()
470 SDL_free(entry); in GLES2_CacheProgram()
476 entry->uniform_locations[GLES2_UNIFORM_PROJECTION] = in GLES2_CacheProgram()
477 data->glGetUniformLocation(entry->id, "u_projection"); in GLES2_CacheProgram()
478 entry->uniform_locations[GLES2_UNIFORM_TEXTURE_V] = in GLES2_CacheProgram()
479 data->glGetUniformLocation(entry->id, "u_texture_v"); in GLES2_CacheProgram()
480 entry->uniform_locations[GLES2_UNIFORM_TEXTURE_U] = in GLES2_CacheProgram()
481 data->glGetUniformLocation(entry->id, "u_texture_u"); in GLES2_CacheProgram()
482 entry->uniform_locations[GLES2_UNIFORM_TEXTURE] = in GLES2_CacheProgram()
483 data->glGetUniformLocation(entry->id, "u_texture"); in GLES2_CacheProgram()
484 entry->uniform_locations[GLES2_UNIFORM_COLOR] = in GLES2_CacheProgram()
485 data->glGetUniformLocation(entry->id, "u_color"); in GLES2_CacheProgram()
487 entry->color = 0; in GLES2_CacheProgram()
489 data->glUseProgram(entry->id); in GLES2_CacheProgram()
490 if (entry->uniform_locations[GLES2_UNIFORM_TEXTURE_V] != -1) { in GLES2_CacheProgram()
491 …data->glUniform1i(entry->uniform_locations[GLES2_UNIFORM_TEXTURE_V], 2); /* always texture unit 2… in GLES2_CacheProgram()
493 if (entry->uniform_locations[GLES2_UNIFORM_TEXTURE_U] != -1) { in GLES2_CacheProgram()
494 …data->glUniform1i(entry->uniform_locations[GLES2_UNIFORM_TEXTURE_U], 1); /* always texture unit 1… in GLES2_CacheProgram()
496 if (entry->uniform_locations[GLES2_UNIFORM_TEXTURE] != -1) { in GLES2_CacheProgram()
497 …data->glUniform1i(entry->uniform_locations[GLES2_UNIFORM_TEXTURE], 0); /* always texture unit 0. … in GLES2_CacheProgram()
499 if (entry->uniform_locations[GLES2_UNIFORM_PROJECTION] != -1) { in GLES2_CacheProgram()
500 …data->glUniformMatrix4fv(entry->uniform_locations[GLES2_UNIFORM_PROJECTION], 1, GL_FALSE, (GLfloat… in GLES2_CacheProgram()
502 if (entry->uniform_locations[GLES2_UNIFORM_COLOR] != -1) { in GLES2_CacheProgram()
503 data->glUniform4f(entry->uniform_locations[GLES2_UNIFORM_COLOR], 0.0f, 0.0f, 0.0f, 0.0f); in GLES2_CacheProgram()
508 entry->next = data->program_cache.head; in GLES2_CacheProgram()
509 data->program_cache.head->prev = entry; in GLES2_CacheProgram()
511 data->program_cache.tail = entry; in GLES2_CacheProgram()
513 data->program_cache.head = entry; in GLES2_CacheProgram()
538 return entry; in GLES2_CacheProgram()
546 GLES2_ShaderCacheEntry *entry = NULL; in GLES2_CacheShader() local
575 entry = data->shader_cache.head; in GLES2_CacheShader()
576 while (entry) { in GLES2_CacheShader()
577 if (entry->instance == instance) { in GLES2_CacheShader()
580 entry = entry->next; in GLES2_CacheShader()
582 if (entry) { in GLES2_CacheShader()
583 return entry; in GLES2_CacheShader()
587 entry = (GLES2_ShaderCacheEntry *)SDL_calloc(1, sizeof(GLES2_ShaderCacheEntry)); in GLES2_CacheShader()
588 if (!entry) { in GLES2_CacheShader()
592 entry->type = type; in GLES2_CacheShader()
593 entry->instance = instance; in GLES2_CacheShader()
596 entry->id = data->glCreateShader(instance->type); in GLES2_CacheShader()
598 data->glShaderSource(entry->id, 1, (const char **)(char *)&instance->data, NULL); in GLES2_CacheShader()
599 data->glCompileShader(entry->id); in GLES2_CacheShader()
600 data->glGetShaderiv(entry->id, GL_COMPILE_STATUS, &compileSuccessful); in GLES2_CacheShader()
602 data->glShaderBinary(1, &entry->id, instance->format, instance->data, instance->length); in GLES2_CacheShader()
610 data->glGetShaderiv(entry->id, GL_INFO_LOG_LENGTH, &length); in GLES2_CacheShader()
614 data->glGetShaderInfoLog(entry->id, length, &length, info); in GLES2_CacheShader()
623 data->glDeleteShader(entry->id); in GLES2_CacheShader()
624 SDL_free(entry); in GLES2_CacheShader()
630 entry->next = data->shader_cache.head; in GLES2_CacheShader()
631 data->shader_cache.head->prev = entry; in GLES2_CacheShader()
633 data->shader_cache.head = entry; in GLES2_CacheShader()
635 return entry; in GLES2_CacheShader()
1351 GLES2_ShaderCacheEntry *entry; in GLES2_DestroyRenderer() local
1353 entry = data->shader_cache.head; in GLES2_DestroyRenderer()
1354 while (entry) { in GLES2_DestroyRenderer()
1355 data->glDeleteShader(entry->id); in GLES2_DestroyRenderer()
1356 next = entry->next; in GLES2_DestroyRenderer()
1357 SDL_free(entry); in GLES2_DestroyRenderer()
1358 entry = next; in GLES2_DestroyRenderer()
1362 GLES2_ProgramCacheEntry *entry; in GLES2_DestroyRenderer() local
1364 entry = data->program_cache.head; in GLES2_DestroyRenderer()
1365 while (entry) { in GLES2_DestroyRenderer()
1366 data->glDeleteProgram(entry->id); in GLES2_DestroyRenderer()
1367 next = entry->next; in GLES2_DestroyRenderer()
1368 SDL_free(entry); in GLES2_DestroyRenderer()
1369 entry = next; in GLES2_DestroyRenderer()