static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; r600_context_queries_suspend(&rctx->ctx); util_blitter_save_blend(rctx->blitter, rctx->states[R600_PIPE_STATE_BLEND]); util_blitter_save_depth_stencil_alpha(rctx->blitter, rctx->states[R600_PIPE_STATE_DSA]); if (rctx->states[R600_PIPE_STATE_STENCIL_REF]) { util_blitter_save_stencil_ref(rctx->blitter, &rctx->stencil_ref); } util_blitter_save_rasterizer(rctx->blitter, rctx->states[R600_PIPE_STATE_RASTERIZER]); util_blitter_save_fragment_shader(rctx->blitter, rctx->ps_shader); util_blitter_save_vertex_shader(rctx->blitter, rctx->vs_shader); util_blitter_save_vertex_elements(rctx->blitter, rctx->vertex_elements); if (rctx->states[R600_PIPE_STATE_VIEWPORT]) { util_blitter_save_viewport(rctx->blitter, &rctx->viewport); } util_blitter_save_vertex_buffers(rctx->blitter, rctx->vbuf_mgr->nr_vertex_buffers, rctx->vbuf_mgr->vertex_buffer); util_blitter_save_so_targets(rctx->blitter, rctx->ctx.num_so_targets, (struct pipe_stream_output_target**)rctx->ctx.so_targets); if (op & R600_SAVE_FRAMEBUFFER) util_blitter_save_framebuffer(rctx->blitter, &rctx->framebuffer); if (op & R600_SAVE_TEXTURES) { util_blitter_save_fragment_sampler_states( rctx->blitter, rctx->ps_samplers.n_samplers, (void**)rctx->ps_samplers.samplers); util_blitter_save_fragment_sampler_views( rctx->blitter, rctx->ps_samplers.n_views, (struct pipe_sampler_view**)rctx->ps_samplers.views); } if ((op & R600_DISABLE_RENDER_COND) && rctx->current_render_cond) { rctx->saved_render_cond = rctx->current_render_cond; rctx->saved_render_cond_mode = rctx->current_render_cond_mode; rctx->context.render_condition(&rctx->context, NULL, 0); } }
static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op) { struct r600_context *rctx = (struct r600_context *)ctx; r600_context_queries_suspend(rctx); util_blitter_save_blend(rctx->blitter, rctx->queued.named.blend); util_blitter_save_depth_stencil_alpha(rctx->blitter, rctx->queued.named.dsa); util_blitter_save_stencil_ref(rctx->blitter, &rctx->stencil_ref); util_blitter_save_rasterizer(rctx->blitter, rctx->queued.named.rasterizer); util_blitter_save_fragment_shader(rctx->blitter, rctx->ps_shader); util_blitter_save_vertex_shader(rctx->blitter, rctx->vs_shader); util_blitter_save_vertex_elements(rctx->blitter, rctx->vertex_elements); if (rctx->queued.named.viewport) { util_blitter_save_viewport(rctx->blitter, &rctx->queued.named.viewport->viewport); } util_blitter_save_vertex_buffer_slot(rctx->blitter, rctx->vertex_buffer); util_blitter_save_so_targets(rctx->blitter, rctx->b.streamout.num_targets, (struct pipe_stream_output_target**)rctx->b.streamout.targets); if (op & R600_SAVE_FRAMEBUFFER) util_blitter_save_framebuffer(rctx->blitter, &rctx->framebuffer); if (op & R600_SAVE_TEXTURES) { util_blitter_save_fragment_sampler_states( rctx->blitter, rctx->samplers[PIPE_SHADER_FRAGMENT].n_samplers, (void**)rctx->samplers[PIPE_SHADER_FRAGMENT].samplers); util_blitter_save_fragment_sampler_views(rctx->blitter, util_last_bit(rctx->samplers[PIPE_SHADER_FRAGMENT].views.desc.enabled_mask & ((1 << NUM_TEX_UNITS) - 1)), rctx->samplers[PIPE_SHADER_FRAGMENT].views.views); } if ((op & R600_DISABLE_RENDER_COND) && rctx->current_render_cond) { rctx->saved_render_cond = rctx->current_render_cond; rctx->saved_render_cond_cond = rctx->current_render_cond_cond; rctx->saved_render_cond_mode = rctx->current_render_cond_mode; rctx->b.b.render_condition(&rctx->b.b, NULL, FALSE, 0); } }
static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op) { struct r600_context *rctx = (struct r600_context *)ctx; r600_context_queries_suspend(rctx); util_blitter_save_blend(rctx->blitter, rctx->queued.named.blend); util_blitter_save_depth_stencil_alpha(rctx->blitter, rctx->queued.named.dsa); util_blitter_save_stencil_ref(rctx->blitter, &rctx->stencil_ref); util_blitter_save_rasterizer(rctx->blitter, rctx->queued.named.rasterizer); util_blitter_save_fragment_shader(rctx->blitter, rctx->ps_shader); util_blitter_save_vertex_shader(rctx->blitter, rctx->vs_shader); util_blitter_save_vertex_elements(rctx->blitter, rctx->vertex_elements); if (rctx->queued.named.viewport) { util_blitter_save_viewport(rctx->blitter, &rctx->queued.named.viewport->viewport); } util_blitter_save_vertex_buffer_slot(rctx->blitter, rctx->vertex_buffer); util_blitter_save_so_targets(rctx->blitter, rctx->num_so_targets, (struct pipe_stream_output_target**)rctx->so_targets); if (op & R600_SAVE_FRAMEBUFFER) util_blitter_save_framebuffer(rctx->blitter, &rctx->framebuffer); if (op & R600_SAVE_TEXTURES) { util_blitter_save_fragment_sampler_states( rctx->blitter, rctx->ps_samplers.n_samplers, (void**)rctx->ps_samplers.samplers); util_blitter_save_fragment_sampler_views( rctx->blitter, rctx->ps_samplers.n_views, (struct pipe_sampler_view**)rctx->ps_samplers.views); } if ((op & R600_DISABLE_RENDER_COND) && rctx->current_render_cond) { rctx->saved_render_cond = rctx->current_render_cond; rctx->saved_render_cond_mode = rctx->current_render_cond_mode; rctx->context.render_condition(&rctx->context, NULL, 0); } }