static void update_tgsi_samplers( struct softpipe_context *softpipe ) { unsigned i, sh; set_shader_sampler(softpipe, PIPE_SHADER_VERTEX, softpipe->vs->max_sampler); set_shader_sampler(softpipe, PIPE_SHADER_FRAGMENT, softpipe->fs_variant->info.file_max[TGSI_FILE_SAMPLER]); if (softpipe->gs) { set_shader_sampler(softpipe, PIPE_SHADER_GEOMETRY, softpipe->gs->max_sampler); } /* XXX is this really necessary here??? */ for (sh = 0; sh < ARRAY_SIZE(softpipe->tex_cache); sh++) { for (i = 0; i < PIPE_MAX_SAMPLERS; i++) { struct softpipe_tex_tile_cache *tc = softpipe->tex_cache[sh][i]; if (tc && tc->texture) { struct softpipe_resource *spt = softpipe_resource(tc->texture); if (spt->timestamp != tc->timestamp) { sp_tex_tile_cache_validate_texture( tc ); /* _debug_printf("INV %d %d\n", tc->timestamp, spt->timestamp); */ tc->timestamp = spt->timestamp; } } } } }
static void update_tgsi_samplers( struct softpipe_context *softpipe ) { unsigned i; softpipe_reset_sampler_variants( softpipe ); for (i = 0; i < PIPE_MAX_SAMPLERS; i++) { struct softpipe_tex_tile_cache *tc = softpipe->fragment_tex_cache[i]; if (tc && tc->texture) { struct softpipe_resource *spt = softpipe_resource(tc->texture); if (spt->timestamp != tc->timestamp) { sp_tex_tile_cache_validate_texture( tc ); /* _debug_printf("INV %d %d\n", tc->timestamp, spt->timestamp); */ tc->timestamp = spt->timestamp; } } } for (i = 0; i < PIPE_MAX_VERTEX_SAMPLERS; i++) { struct softpipe_tex_tile_cache *tc = softpipe->vertex_tex_cache[i]; if (tc && tc->texture) { struct softpipe_resource *spt = softpipe_resource(tc->texture); if (spt->timestamp != tc->timestamp) { sp_tex_tile_cache_validate_texture(tc); tc->timestamp = spt->timestamp; } } } for (i = 0; i < PIPE_MAX_GEOMETRY_SAMPLERS; i++) { struct softpipe_tex_tile_cache *tc = softpipe->geometry_tex_cache[i]; if (tc && tc->texture) { struct softpipe_resource *spt = softpipe_resource(tc->texture); if (spt->timestamp != tc->timestamp) { sp_tex_tile_cache_validate_texture(tc); tc->timestamp = spt->timestamp; } } } }
static void update_tgsi_samplers( struct softpipe_context *softpipe ) { unsigned i, sh; softpipe_reset_sampler_variants( softpipe ); for (sh = 0; sh < Elements(softpipe->tex_cache); sh++) { for (i = 0; i < PIPE_MAX_SAMPLERS; i++) { struct softpipe_tex_tile_cache *tc = softpipe->tex_cache[sh][i]; if (tc && tc->texture) { struct softpipe_resource *spt = softpipe_resource(tc->texture); if (spt->timestamp != tc->timestamp) { sp_tex_tile_cache_validate_texture( tc ); /* _debug_printf("INV %d %d\n", tc->timestamp, spt->timestamp); */ tc->timestamp = spt->timestamp; } } } } }