Home | History | Annotate | Download | only in radeonsi

Lines Matching refs:rctx

42 	struct r600_context *rctx = (struct r600_context *)ctx;
51 si_pm4_delete_state(rctx, vs, shader->pm4);
95 si_pm4_bind_state(rctx, vs, shader->pm4);
100 struct r600_context *rctx = (struct r600_context *)ctx;
112 si_pm4_delete_state(rctx, ps, shader->pm4);
123 rctx->queued.named.rasterizer->flatshade))
211 shader->sprite_coord_enable = rctx->sprite_coord_enable;
212 si_pm4_bind_state(rctx, ps, shader->pm4);
244 static bool si_update_draw_info_state(struct r600_context *rctx,
277 rctx->pa_sc_line_stipple);
281 S_028814_PROVOKING_VTX_LAST(1) | rctx->pa_su_sc_mode_cntl);
283 si_pm4_set_reg(pm4, R_028814_PA_SU_SC_MODE_CNTL, rctx->pa_su_sc_mode_cntl);
286 prim == PIPE_PRIM_POINTS ? rctx->pa_cl_vs_out_cntl : 0
287 /*| (rctx->rasterizer->clip_plane_enable &
288 rctx->vs_shader->shader.clip_dist_write)*/);
289 si_pm4_set_reg(pm4, R_028810_PA_CL_CLIP_CNTL, rctx->pa_cl_clip_cntl
290 /*| (rctx->vs_shader->shader.clip_dist_write ||
291 rctx->vs_shader->shader.vs_prohibit_ucps ?
292 0 : rctx->rasterizer->clip_plane_enable & 0x3F)*/);
294 si_pm4_set_state(rctx, draw_info, pm4);
298 static void si_update_alpha_ref(struct r600_context *rctx)
304 alpha_ref = rctx->alpha_ref;
306 if (rctx->export_16bpc)
310 si_pm4_set_state(rctx, TODO, pm4);
311 rctx->alpha_ref_dirty = false;
315 static void si_update_spi_map(struct r600_context *rctx)
317 struct si_shader *ps = &rctx->ps_shader->current->shader;
318 struct si_shader *vs = &rctx->vs_shader->current->shader;
330 rctx->rasterizer && rctx->rasterizer->flatshade)) {
336 rctx->sprite_coord_enable & (1 << ps->input[i].sid)) {
356 si_pm4_set_state(rctx, spi, pm4);
359 static void si_update_derived_state(struct r600_context *rctx)
361 struct pipe_context * ctx = (struct pipe_context*)rctx;
364 if (!rctx->blitter->running) {
365 if (rctx->have_depth_fb || rctx->have_depth_texture)
366 si_flush_depth_textures(rctx);
369 si_shader_select(ctx, rctx->ps_shader, &ps_dirty);
371 if (rctx->alpha_ref_dirty) {
372 si_update_alpha_ref(rctx);
375 if (!rctx->vs_shader->current->pm4) {
376 si_pipe_shader_vs(ctx, rctx->vs_shader->current);
379 if (!rctx->ps_shader->current->pm4) {
380 si_pipe_shader_ps(ctx, rctx->ps_shader->current);
383 if (!rctx->ps_shader->current->bo) {
384 if (!rctx->dummy_pixel_shader->pm4)
385 si_pipe_shader_ps(ctx, rctx->dummy_pixel_shader);
387 si_pm4_bind_state(rctx, vs, rctx->dummy_pixel_shader->pm4);
393 si_pm4_bind_state(rctx, ps, rctx->ps_shader->current->pm4);
394 rctx->shader_dirty = true;
397 if (rctx->shader_dirty) {
398 si_update_spi_map(rctx);
399 rctx->shader_dirty = false;
403 static void si_vertex_buffer_update(struct r600_context *rctx)
405 struct pipe_context *ctx = &rctx->context;
414 count = rctx->vertex_elements->count;
419 struct pipe_vertex_element *ve = &rctx->vertex_elements->elements[i];
424 if (ve->vertex_buffer_index >= rctx->nr_vertex_buffers)
427 vb = &rctx->vertex_buffer[ve->vertex_buffer_index];
445 si_pm4_sh_data_add(pm4, rctx->vertex_elements->rsrc_word3[i]);
453 si_pm4_set_state(rctx, vertex_buffers, pm4);
456 static void si_state_draw(struct r600_context *rctx,
464 if (rctx->num_cs_dw_queries_suspend) {
465 struct si_state_dsa *dsa = rctx->queued.named.dsa;
483 si_pm4_cmd_end(pm4, rctx->predicate_drawing);
487 si_pm4_cmd_end(pm4, rctx->predicate_drawing);
491 va = r600_resource_va(&rctx->screen->screen, ib->buffer);
497 rctx->index_buffer.index_size);
502 si_pm4_cmd_end(pm4, rctx->predicate_drawing);
509 si_pm4_cmd_end(pm4, rctx->predicate_drawing);
511 si_pm4_set_state(rctx, draw, pm4);
516 struct r600_context *rctx = (struct r600_context *)ctx;
521 (info->indexed && !rctx->index_buffer.buffer)) {
525 if (!rctx->ps_shader || !rctx->vs_shader)
528 si_update_derived_state(rctx);
529 si_vertex_buffer_update(rctx);
533 pipe_resource_reference(&ib.buffer, rctx->index_buffer.buffer);
534 ib.index_size = rctx->index_buffer.index_size;
535 ib.offset = rctx->index_buffer.offset + info->start * ib.index_size;
538 r600_translate_index_buffer(rctx, &ib, info->count);
541 r600_upload_index_buffer(rctx, &ib, info->count);
545 r600_context_draw_opaque_count(rctx, (struct r600_so_target*)info->count_from_stream_output);
548 rctx->vs_shader_so_strides = rctx->vs_shader->current->so_strides;
550 if (!si_update_draw_info_state(rctx, info))
553 si_state_draw(rctx, info, &ib);
555 cp_coher_cntl = si_pm4_sync_flags(rctx);
559 si_pm4_set_state(rctx, sync, pm4);
563 rctx->pm4_dirty_cdwords += si_pm4_dirty_dw(rctx);
565 si_need_cs_space(rctx, 0, TRUE);
567 si_pm4_emit_dirty(rctx);
568 rctx->pm4_dirty_cdwords = 0;
572 if (rctx->streamout_start) {
573 r600_context_streamout_begin(rctx);
574 rctx->streamout_start = FALSE;
579 rctx->flags |= R600_CONTEXT_DST_CACHES_DIRTY;
581 if (rctx->framebuffer.zsbuf)
583 struct pipe_resource *tex = rctx->framebuffer.zsbuf->texture;