i965: add shader cache support for geometry shaders
[mesa.git] / src / mesa / drivers / dri / i965 / brw_gs.c
index 19eab2f5332757067a5ae905ce48e5f753bed4a9..f74ee178f25b056badf1bb827ec20e1c7720a9af 100644 (file)
@@ -192,14 +192,20 @@ brw_upload_gs_prog(struct brw_context *brw)
 
    brw_gs_populate_key(brw, &key);
 
-   if (!brw_search_cache(&brw->cache, BRW_CACHE_GS_PROG,
-                         &key, sizeof(key),
-                         &stage_state->prog_offset,
-                         &brw->gs.base.prog_data)) {
-      bool success = brw_codegen_gs_prog(brw, gp, &key);
-      assert(success);
-      (void)success;
-   }
+   if (brw_search_cache(&brw->cache, BRW_CACHE_GS_PROG,
+                        &key, sizeof(key),
+                        &stage_state->prog_offset,
+                        &brw->gs.base.prog_data))
+      return;
+
+   if (brw_disk_cache_upload_program(brw, MESA_SHADER_GEOMETRY))
+      return;
+
+   gp = (struct brw_program *) brw->programs[MESA_SHADER_GEOMETRY];
+   gp->id = key.program_string_id;
+
+   MAYBE_UNUSED bool success = brw_codegen_gs_prog(brw, gp, &key);
+   assert(success);
 }
 
 bool