static void brw_upload_wm_prog( struct brw_context *brw ) { struct brw_wm_prog_key key; struct brw_fragment_program *fp = (struct brw_fragment_program *) brw->fragment_program; brw_wm_populate_key(brw, &key); /* Make an early check for the key. */ if (brw_search_cache(&brw->cache[BRW_WM_PROG], &key, sizeof(key), &brw->wm.prog_data, &brw->wm.prog_gs_offset)) return; do_wm_prog(brw, fp, &key); }
static void brw_upload_wm_prog(struct brw_context *brw) { struct gl_context *ctx = &brw->ctx; struct brw_wm_prog_key key; struct brw_fragment_program *fp = (struct brw_fragment_program *) brw->fragment_program; brw_wm_populate_key(brw, &key); if (!brw_search_cache(&brw->cache, BRW_WM_PROG, &key, sizeof(key), &brw->wm.prog_offset, &brw->wm.prog_data)) { bool success = do_wm_prog(brw, ctx->Shader._CurrentFragmentProgram, fp, &key); (void) success; assert(success); } }
static enum pipe_error brw_prepare_wm_prog(struct brw_context *brw) { struct brw_wm_prog_key key; struct brw_fragment_shader *fs = brw->curr.fragment_shader; enum pipe_error ret; brw_wm_populate_key(brw, &key); /* Make an early check for the key. */ if (brw_search_cache(&brw->cache, BRW_WM_PROG, &key, sizeof(key), NULL, 0, &brw->wm.prog_data, &brw->wm.prog_bo)) return PIPE_OK; ret = do_wm_prog(brw, fs, &key, &brw->wm.prog_bo); if (ret) return ret; return PIPE_OK; }