Lines Matching refs:pbo
191 if (!st->pbo.vs) {
192 st->pbo.vs = st_pbo_create_vs(st);
193 if (!st->pbo.vs)
197 if (addr->depth != 1 && st->pbo.use_gs && !st->pbo.gs) {
198 st->pbo.gs = st_pbo_create_gs(st);
199 if (!st->pbo.gs)
203 cso_set_vertex_shader_handle(cso, st->pbo.vs);
205 cso_set_geometry_shader_handle(cso, addr->depth != 1 ? st->pbo.gs : NULL);
271 cso_set_rasterizer(cso, &st->pbo.raster);
294 "st/pbo VS");
307 if (st->pbo.layers) {
314 if (st->pbo.use_gs) {
421 "st/pbo download FS" :
422 "st/pbo upload FS");
439 /* When st->pbo.layers == false, it is guaranteed we only have a single
451 assert(st->pbo.layers);
607 STATIC_ASSERT(ARRAY_SIZE(st->pbo.upload_fs) == ST_NUM_PBO_CONVERSIONS);
611 if (!st->pbo.upload_fs[conversion][need_layer])
612 st->pbo.upload_fs[conversion][need_layer] = create_fs(st, false, 0, conversion, PIPE_FORMAT_NONE, need_layer);
614 return st->pbo.upload_fs[conversion][need_layer];
623 STATIC_ASSERT(ARRAY_SIZE(st->pbo.download_fs) == ST_NUM_PBO_CONVERSIONS);
633 if (!formatless_store && !st->pbo.download_fs[conversion][target][need_layer])
634 st->pbo.download_fs[conversion][target][need_layer] = calloc(sizeof(void *), PIPE_FORMAT_COUNT);
637 if (!st->pbo.download_fs[conversion][target][need_layer])
638 st->pbo.download_fs[conversion][target][need_layer] = create_fs(st, true, target, conversion, PIPE_FORMAT_NONE, need_layer);
639 return st->pbo.download_fs[conversion][target][need_layer];
641 void **fs_array = (void **)st->pbo.download_fs[conversion][target][need_layer];
653 st->pbo.upload_enabled =
657 if (!st->pbo.upload_enabled)
660 st->pbo.download_enabled =
661 st->pbo.upload_enabled &&
667 st->pbo.rgba_only =
672 st->pbo.layers = true;
680 st->pbo.layers = true;
681 st->pbo.use_gs = true;
686 memset(&st->pbo.upload_blend, 0, sizeof(struct pipe_blend_state));
687 st->pbo.upload_blend.rt[0].colormask = PIPE_MASK_RGBA;
690 memset(&st->pbo.raster, 0, sizeof(struct pipe_rasterizer_state));
691 st->pbo.raster.half_pixel_center = 1;
694 st->pbo.shaders = _mesa_hash_table_create_u32_keys(NULL);
704 for (i = 0; i < ARRAY_SIZE(st->pbo.upload_fs); ++i) {
705 for (unsigned j = 0; j < ARRAY_SIZE(st->pbo.upload_fs[0]); j++) {
706 if (st->pbo.upload_fs[i][j]) {
707 st->pipe->delete_fs_state(st->pipe, st->pbo.upload_fs[i][j]);
708 st->pbo.upload_fs[i][j] = NULL;
713 for (i = 0; i < ARRAY_SIZE(st->pbo.download_fs); ++i) {
714 for (unsigned j = 0; j < ARRAY_SIZE(st->pbo.download_fs[0]); ++j) {
715 for (unsigned k = 0; k < ARRAY_SIZE(st->pbo.download_fs[0][0]); k++) {
716 if (st->pbo.download_fs[i][j][k]) {
718 st->pipe->delete_fs_state(st->pipe, st->pbo.download_fs[i][j][k]);
720 void **fs_array = (void **)st->pbo.download_fs[i][j][k];
724 free(st->pbo.download_fs[i][j][k]);
726 st->pbo.download_fs[i][j][k] = NULL;
732 if (st->pbo.gs) {
733 st->pipe->delete_gs_state(st->pipe, st->pbo.gs);
734 st->pbo.gs = NULL;
737 if (st->pbo.vs) {
738 st->pipe->delete_vs_state(st->pipe, st->pbo.vs);
739 st->pbo.vs = NULL;
742 if (st->pbo.shaders) {
743 hash_table_foreach(st->pbo.shaders, entry)
745 _mesa_hash_table_destroy(st->pbo.shaders, NULL);