void VertexShaderCache::LoadShaderCache() { VertexShaderCacheInserter<VertexShaderUid> inserter; g_vs_disk_cache.OpenAndRead(GetDiskShaderCacheFileName(APIType::D3D, "VS", true, true), inserter); VertexShaderCacheInserter<UberShader::VertexShaderUid> uber_inserter; g_uber_vs_disk_cache.OpenAndRead(GetDiskShaderCacheFileName(APIType::D3D, "UberVS", false, true), uber_inserter); }
void StateCache::LoadFromDisk() { std::string cache_filename = GetDiskShaderCacheFileName(API_D3D11, "pso", true, true); PipelineStateCacheInserter inserter; s_pso_disk_cache.OpenAndRead(cache_filename, inserter); if (s_cache_is_corrupted) { // If a PSO fails to create, that means either: // - The file itself is corrupt. // - A driver/HW change has occured, causing the existing cache blobs to be invalid. // // In either case, we want to re-create the disk cache. This should not be a frequent occurence. s_pso_disk_cache.Close(); s_gx_state_cache.m_small_pso_map.clear(); File::Delete(cache_filename); s_pso_disk_cache.OpenAndRead(cache_filename, inserter); s_cache_is_corrupted = false; } }
void GeometryShaderCache::LoadShaderCache() { GeometryShaderCacheInserter inserter; g_gs_disk_cache.OpenAndRead(GetDiskShaderCacheFileName(APIType::D3D, "GS", true, true), inserter); }