/* Calculate interpolants for triangle and line rasterization. */ static void upload_gs_prog( struct brw_context *brw ) { struct brw_gs_prog_key key; /* Populate the key: */ populate_key(brw, &key); if (brw->gs.prog_active != key.need_gs_prog) { brw->state.dirty.cache |= CACHE_NEW_GS_PROG; brw->gs.prog_active = key.need_gs_prog; } if (brw->gs.prog_active) { if (!search_cache(brw, &key)) compile_gs_prog( brw, &key ); } }
/* Calculate interpolants for triangle and line rasterization. */ static void prepare_gs_prog(struct brw_context *brw) { struct brw_gs_prog_key key; /* Populate the key: */ populate_key(brw, &key); if (brw->gs.prog_active != key.need_gs_prog) { brw->state.dirty.cache |= CACHE_NEW_GS_PROG; brw->gs.prog_active = key.need_gs_prog; } if (brw->gs.prog_active) { if (!brw_search_cache(&brw->cache, BRW_GS_PROG, &key, sizeof(key), &brw->gs.prog_offset, &brw->gs.prog_data)) { compile_gs_prog( brw, &key ); } } }
/* Calculate interpolants for triangle and line rasterization. */ static void brw_upload_ff_gs_prog(struct brw_context *brw) { struct brw_ff_gs_prog_key key; /* Populate the key: */ populate_key(brw, &key); if (brw->ff_gs.prog_active != key.need_gs_prog) { brw->state.dirty.brw |= BRW_NEW_FF_GS_PROG_DATA; brw->ff_gs.prog_active = key.need_gs_prog; } if (brw->ff_gs.prog_active) { if (!brw_search_cache(&brw->cache, BRW_CACHE_FF_GS_PROG, &key, sizeof(key), &brw->ff_gs.prog_offset, &brw->ff_gs.prog_data)) { compile_ff_gs_prog( brw, &key ); } } }