Lines Matching refs:ctx

45 	struct fd_context *ctx = fd_context(pctx);
48 ctx->batch->needs_out_fence_fd = true;
50 if (!ctx->screen->reorder) {
51 fd_batch_flush(ctx->batch, true);
53 fd_bc_flush(&ctx->screen->batch_cache, ctx);
60 if (!ctx->last_fence || ctx->batch->needs_out_fence_fd) {
61 ctx->batch->needs_flush = true;
62 fd_gmem_render_noop(ctx->batch);
63 fd_batch_reset(ctx->batch);
65 fd_fence_ref(pctx->screen, fence, ctx->last_fence);
76 struct fd_context *ctx = fd_context(pctx);
80 if (!ctx->batch)
83 ring = ctx->batch->draw;
88 if (ctx->screen->gpu_id >= 500)
109 struct fd_context *ctx = fd_context(pctx);
114 if (ctx->screen->reorder)
115 util_queue_destroy(&ctx->flush_queue);
117 fd_batch_reference(&ctx->batch, NULL); /* unref current batch */
118 fd_bc_invalidate_context(ctx);
120 fd_fence_ref(pctx->screen, &ctx->last_fence, NULL);
125 if (ctx->blitter)
126 util_blitter_destroy(ctx->blitter);
128 if (ctx->clear_rs_state)
129 pctx->delete_rasterizer_state(pctx, ctx->clear_rs_state);
131 if (ctx->primconvert)
132 util_primconvert_destroy(ctx->primconvert);
134 slab_destroy_child(&ctx->transfer_pool);
136 for (i = 0; i < ARRAY_SIZE(ctx->pipe); i++) {
137 struct fd_vsc_pipe *pipe = &ctx->pipe[i];
143 fd_device_del(ctx->dev);
147 (uint32_t)ctx->stats.batch_total, (uint32_t)ctx->stats.batch_sysmem,
148 (uint32_t)ctx->stats.batch_gmem, (uint32_t)ctx->stats.batch_restore);
151 FREE(ctx);
158 struct fd_context *ctx = fd_context(pctx);
161 ctx->debug = *cb;
163 memset(&ctx->debug, 0, sizeof(ctx->debug));
194 fd_context_setup_common_vbos(struct fd_context *ctx)
196 struct pipe_context *pctx = &ctx->base;
198 ctx->solid_vbuf = create_solid_vertexbuf(pctx);
199 ctx->blit_texcoord_vbuf = create_blit_texcoord_vertexbuf(pctx);
202 ctx->solid_vbuf_state.vtx = pctx->create_vertex_elements_state(
208 ctx->solid_vbuf_state.vertexbuf.count = 1;
209 ctx->solid_vbuf_state.vertexbuf.vb[0].stride = 12;
210 ctx->solid_vbuf_state.vertexbuf.vb[0].buffer = ctx->solid_vbuf;
213 ctx->blit_vbuf_state.vtx = pctx->create_vertex_elements_state(
223 ctx->blit_vbuf_state.vertexbuf.count = 2;
224 ctx->blit_vbuf_state.vertexbuf.vb[0].stride = 8;
225 ctx->blit_vbuf_state.vertexbuf.vb[0].buffer = ctx->blit_texcoord_vbuf;
226 ctx->blit_vbuf_state.vertexbuf.vb[1].stride = 12;
227 ctx->blit_vbuf_state.vertexbuf.vb[1].buffer = ctx->solid_vbuf;
231 fd_context_cleanup_common_vbos(struct fd_context *ctx)
233 struct pipe_context *pctx = &ctx->base;
235 pctx->delete_vertex_elements_state(pctx, ctx->solid_vbuf_state.vtx);
236 pctx->delete_vertex_elements_state(pctx, ctx->blit_vbuf_state.vtx);
238 pipe_resource_reference(&ctx->solid_vbuf, NULL);
239 pipe_resource_reference(&ctx->blit_texcoord_vbuf, NULL);
243 fd_context_init(struct fd_context *ctx, struct pipe_screen *pscreen,
250 ctx->screen = screen;
252 ctx->primtypes = primtypes;
253 ctx->primtype_mask = 0;
256 ctx->primtype_mask |= (1 << i);
261 ctx->sample_mask = 0xffff;
263 pctx = &ctx->base;
277 ctx->batch = fd_bc_alloc_batch(&screen->batch_cache, ctx);
280 slab_create_child(&ctx->transfer_pool, &screen->transfer_pool);
289 ctx->blitter = util_blitter_create(pctx);
290 if (!ctx->blitter)
293 ctx->primconvert = util_primconvert_create(pctx, ctx->primtype_mask);
294 if (!ctx->primconvert)