Lines Matching refs:rctx

68 	struct r600_context *rctx = (struct r600_context *)context;
71 r600_isa_destroy(rctx->isa);
73 r600_sb_context_destroy(rctx->sb_context);
75 for (sh = 0; sh < (rctx->b.gfx_level < EVERGREEN ? R600_NUM_HW_STAGES : EG_NUM_HW_STAGES); sh++) {
76 r600_resource_reference(&rctx->scratch_buffers[sh].buffer, NULL);
78 r600_resource_reference(&rctx->dummy_cmask, NULL);
79 r600_resource_reference(&rctx->dummy_fmask, NULL);
81 if (rctx->append_fence)
82 pipe_resource_reference((struct pipe_resource**)&rctx->append_fence, NULL);
84 rctx->b.b.set_constant_buffer(&rctx->b.b, sh, R600_BUFFER_INFO_CONST_BUFFER, false, NULL);
85 free(rctx->driver_consts[sh].constants);
88 if (rctx->fixed_func_tcs_shader)
89 rctx->b.b.delete_tcs_state(&rctx->b.b, rctx->fixed_func_tcs_shader);
91 if (rctx->dummy_pixel_shader) {
92 rctx->b.b.delete_fs_state(&rctx->b.b, rctx->dummy_pixel_shader);
94 if (rctx->custom_dsa_flush) {
95 rctx->b.b.delete_depth_stencil_alpha_state(&rctx->b.b, rctx->custom_dsa_flush);
97 if (rctx->custom_blend_resolve) {
98 rctx->b.b.delete_blend_state(&rctx->b.b, rctx->custom_blend_resolve);
100 if (rctx->custom_blend_decompress) {
101 rctx->b.b.delete_blend_state(&rctx->b.b, rctx->custom_blend_decompress);
103 if (rctx->custom_blend_fastclear) {
104 rctx->b.b.delete_blend_state(&rctx->b.b, rctx->custom_blend_fastclear);
106 util_unreference_framebuffer_state(&rctx->framebuffer.state);
108 if (rctx->gs_rings.gsvs_ring.buffer)
109 pipe_resource_reference(&rctx->gs_rings.gsvs_ring.buffer, NULL);
111 if (rctx->gs_rings.esgs_ring.buffer)
112 pipe_resource_reference(&rctx->gs_rings.esgs_ring.buffer, NULL);
116 rctx->b.b.set_constant_buffer(context, sh, i, false, NULL);
118 if (rctx->blitter) {
119 util_blitter_destroy(rctx->blitter);
121 u_suballocator_destroy(&rctx->allocator_fetch_shader);
123 r600_release_command_buffer(&rctx->start_cs_cmd);
125 FREE(rctx->start_compute_cs_cmd.buf);
127 r600_common_context_cleanup(&rctx->b);
129 r600_resource_reference(&rctx->trace_buf, NULL);
130 r600_resource_reference(&rctx->last_trace_buf, NULL);
131 radeon_clear_saved_cs(&rctx->last_gfx);
133 FREE(rctx);
139 struct r600_context *rctx = CALLOC_STRUCT(r600_context);
143 if (!rctx)
146 rctx->b.b.screen = screen;
148 rctx->b.b.priv = NULL; /* for threaded_context_unwrap_sync */
149 rctx->b.b.destroy = r600_destroy_context;
150 rctx->b.set_atom_dirty = (void *)r600_set_atom_dirty;
152 if (!r600_common_context_init(&rctx->b, &rscreen->b, flags))
155 rctx->screen = rscreen;
156 list_inithead(&rctx->texture_buffers);
158 r600_init_blit_functions(rctx);
161 rctx->b.b.create_video_codec = r600_uvd_create_decoder;
162 rctx->b.b.create_video_buffer = r600_video_buffer_create;
164 rctx->b.b.create_video_codec = vl_create_decoder;
165 rctx->b.b.create_video_buffer = vl_video_buffer_create;
169 rctx->is_debug = true;
170 r600_init_common_state_functions(rctx);
172 switch (rctx->b.gfx_level) {
175 r600_init_state_functions(rctx);
176 r600_init_atom_start_cs(rctx);
177 rctx->custom_dsa_flush = r600_create_db_flush_dsa(rctx);
178 rctx->custom_blend_resolve = rctx->b.gfx_level == R700 ? r700_create_resolve_blend(rctx)
179 : r600_create_resolve_blend(rctx);
180 rctx->custom_blend_decompress = r600_create_decompress_blend(rctx);
181 rctx->has_vertex_cache = !(rctx->b.family == CHIP_RV610 ||
182 rctx->b.family == CHIP_RV620 ||
183 rctx->b.family == CHIP_RS780 ||
184 rctx->b.family == CHIP_RS880 ||
185 rctx->b.family == CHIP_RV710);
189 evergreen_init_state_functions(rctx);
190 evergreen_init_atom_start_cs(rctx);
191 evergreen_init_atom_start_compute_cs(rctx);
192 rctx->custom_dsa_flush = evergreen_create_db_flush_dsa(rctx);
193 rctx->custom_blend_resolve = evergreen_create_resolve_blend(rctx);
194 rctx->custom_blend_decompress = evergreen_create_decompress_blend(rctx);
195 rctx->custom_blend_fastclear = evergreen_create_fastclear_blend(rctx);
196 rctx->has_vertex_cache = !(rctx->b.family == CHIP_CEDAR ||
197 rctx->b.family == CHIP_PALM ||
198 rctx->b.family == CHIP_SUMO ||
199 rctx->b.family == CHIP_SUMO2 ||
200 rctx->b.family == CHIP_CAICOS ||
201 rctx->b.family == CHIP_CAYMAN ||
202 rctx->b.family == CHIP_ARUBA);
204 rctx->append_fence = pipe_buffer_create(rctx->b.b.screen, PIPE_BIND_CUSTOM,
208 R600_ERR("Unsupported gfx level %d.\n", rctx->b.gfx_level);
212 ws->cs_create(&rctx->b.gfx.cs, rctx->b.ctx, AMD_IP_GFX,
213 r600_context_gfx_flush, rctx, false);
214 rctx->b.gfx.flush = r600_context_gfx_flush;
216 u_suballocator_init(&rctx->allocator_fetch_shader, &rctx->b.b, 64 * 1024,
219 rctx->isa = calloc(1, sizeof(struct r600_isa));
220 if (!rctx->isa || r600_isa_init(rctx, rctx->isa))
224 rctx->b.b.resource_copy_region = rctx->b.dma_copy;
226 rctx->blitter = util_blitter_create(&rctx->b.b);
227 if (rctx->blitter == NULL)
229 util_blitter_set_texture_multisample(rctx->blitter, rscreen->has_msaa);
230 rctx->blitter->draw_rectangle = r600_draw_rectangle;
232 r600_begin_new_cs(rctx);
234 rctx->dummy_pixel_shader =
235 util_make_fragment_cloneinput_shader(&rctx->b.b, 0,
238 rctx->b.b.bind_fs_state(&rctx->b.b, rctx->dummy_pixel_shader);
240 return &rctx->b.b;
243 r600_destroy_context(&rctx->b.b);