Lines Matching refs:v3d

115 emit_one_texture(struct v3d_context *v3d, struct v3d_texture_stateobj *stage_tex,
118 struct v3d_job *job = v3d->job;
125 const struct v3d_device_info *devinfo = &v3d->screen->devinfo;
240 emit_textures(struct v3d_context *v3d, struct v3d_texture_stateobj *stage_tex)
244 emit_one_texture(v3d, stage_tex, i);
250 translate_colormask(struct v3d_context *v3d, uint32_t colormask, int rt)
252 if (v3d->swap_color_rb & (1 << rt)) {
262 emit_rt_blend(struct v3d_context *v3d, struct v3d_job *job,
360 struct v3d_context *v3d = job->v3d;
363 for (int i = 0; i < ARRAY_SIZE(v3d->prog.fs->prog_data.fs->flat_shade_flags); i++) {
387 get_tf_shader(struct v3d_context *v3d)
389 if (v3d->prog.bind_gs)
390 return v3d->prog.bind_gs;
392 return v3d->prog.bind_vs;
398 struct v3d_context *v3d = v3d_context(pctx);
399 struct v3d_job *job = v3d->job;
400 bool rasterizer_discard = v3d->rasterizer->base.rasterizer_discard;
402 if (v3d->dirty & (V3D_DIRTY_SCISSOR | V3D_DIRTY_VIEWPORT |
404 float *vpscale = v3d->viewport.scale;
405 float *vptranslate = v3d->viewport.translate;
420 if (!v3d->rasterizer->base.scissor) {
426 minx = MAX2(vp_minx, v3d->scissor.minx);
427 miny = MAX2(vp_miny, v3d->scissor.miny);
428 maxx = MIN2(vp_maxx, v3d->scissor.maxx);
429 maxy = MIN2(vp_maxy, v3d->scissor.maxy);
454 if (!v3d->rasterizer->base.scissor) {
457 (v3d->dirty & V3D_DIRTY_SCISSOR)) {
460 v3d->scissor.minx;
462 v3d->scissor.miny;
464 v3d->scissor.maxx - 1;
466 v3d->scissor.maxy - 1;
475 if (v3d->dirty & (V3D_DIRTY_RASTERIZER |
482 !(v3d->rasterizer->base.cull_face &
486 !(v3d->rasterizer->base.cull_face &
492 v3d->rasterizer->base.front_ccw;
495 v3d->rasterizer->base.offset_tri;
506 v3d->rasterizer->base.multisample ||
507 v3d->sample_mask != 0xf;
510 v3d->rasterizer->base.flatshade_first;
512 config.blend_enable = v3d->blend->blend_enables;
519 if (v3d->zsa->base.depth_enabled) {
521 v3d->zsa->base.depth_writemask;
525 v3d->zsa->base.depth_func;
531 v3d->zsa->base.stencil[0].enabled;
537 v3d_line_smoothing_enabled(v3d) ?
544 if (v3d->dirty & V3D_DIRTY_RASTERIZER &&
545 v3d->rasterizer->base.offset_tri) {
549 v3d->rasterizer->depth_offset_z16,
553 v3d->rasterizer->depth_offset,
558 if (v3d->dirty & V3D_DIRTY_RASTERIZER) {
560 point_size.point_size = v3d->rasterizer->point_size;
564 line_width.line_width = v3d_get_real_line_width(v3d);
568 if (v3d->dirty & V3D_DIRTY_VIEWPORT) {
571 v3d->viewport.scale[0] * 256.0f;
573 v3d->viewport.scale[1] * 256.0f;
578 v3d->viewport.translate[2];
580 v3d->viewport.scale[2];
583 float z1 = (v3d->viewport.translate[2] -
584 v3d->viewport.scale[2]);
585 float z2 = (v3d->viewport.translate[2] +
586 v3d->viewport.scale[2]);
593 v3d->viewport.translate[0];
595 v3d->viewport.translate[1];
599 if (v3d->dirty & V3D_DIRTY_BLEND) {
600 struct v3d_blend_state *blend = v3d->blend;
611 emit_rt_blend(v3d, job, &blend->base, i,
613 v3d->blend_dst_alpha_one & (1 << i));
614 } else if (v3d->blend_dst_alpha_one &&
615 util_bitcount(v3d->blend_dst_alpha_one) < job->nr_cbufs) {
625 emit_rt_blend(v3d, job, &blend->base, 0,
627 v3d->blend_dst_alpha_one,
629 emit_rt_blend(v3d, job, &blend->base, 0,
631 ~v3d->blend_dst_alpha_one,
634 emit_rt_blend(v3d, job, &blend->base, 0,
636 v3d->blend_dst_alpha_one);
641 if (v3d->dirty & V3D_DIRTY_BLEND) {
642 struct pipe_blend_state *blend = &v3d->blend->base;
649 mask.mask |= translate_colormask(v3d, rt_mask,
658 if (v3d->dirty & V3D_DIRTY_BLEND_COLOR ||
659 (V3D_VERSION < 41 && (v3d->dirty & V3D_DIRTY_BLEND))) {
661 color.red_f16 = (v3d->swap_color_rb ?
662 v3d->blend_color.hf[2] :
663 v3d->blend_color.hf[0]);
664 color.green_f16 = v3d->blend_color.hf[1];
665 color.blue_f16 = (v3d->swap_color_rb ?
666 v3d->blend_color.hf[0] :
667 v3d->blend_color.hf[2]);
668 color.alpha_f16 = v3d->blend_color.hf[3];
672 if (v3d->dirty & (V3D_DIRTY_ZSA | V3D_DIRTY_STENCIL_REF)) {
673 struct pipe_stencil_state *front = &v3d->zsa->base.stencil[0];
674 struct pipe_stencil_state *back = &v3d->zsa->base.stencil[1];
678 v3d->zsa->stencil_front, config) {
680 v3d->stencil_ref.ref_value[0];
686 v3d->zsa->stencil_back, config) {
688 v3d->stencil_ref.ref_value[1];
697 if (v3d->dirty & V3D_DIRTY_FRAGTEX)
698 emit_textures(v3d, &v3d->tex[PIPE_SHADER_FRAGMENT]);
700 if (v3d->dirty & V3D_DIRTY_GEOMTEX)
701 emit_textures(v3d, &v3d->tex[PIPE_SHADER_GEOMETRY]);
703 if (v3d->dirty & V3D_DIRTY_VERTTEX)
704 emit_textures(v3d, &v3d->tex[PIPE_SHADER_VERTEX]);
707 if (v3d->dirty & V3D_DIRTY_FLAT_SHADE_FLAGS) {
709 v3d->prog.fs->prog_data.fs->flat_shade_flags,
716 if (v3d->dirty & V3D_DIRTY_NOPERSPECTIVE_FLAGS) {
718 v3d->prog.fs->prog_data.fs->noperspective_flags,
724 if (v3d->dirty & V3D_DIRTY_CENTROID_FLAGS) {
726 v3d->prog.fs->prog_data.fs->centroid_flags,
736 if (v3d->dirty & (V3D_DIRTY_STREAMOUT |
739 struct v3d_streamout_stateobj *so = &v3d->streamout;
741 bool psiz_per_vertex = (v3d->prim_mode == PIPE_PRIM_POINTS &&
742 v3d->rasterizer->base.point_size_per_vertex);
744 get_tf_shader(v3d);
750 bool tf_enabled = v3d_transform_feedback_enabled(v3d);
779 if (v3d->dirty & V3D_DIRTY_STREAMOUT) {
780 struct v3d_uncompiled_shader *tf_shader = get_tf_shader(v3d);
781 struct v3d_streamout_stateobj *so = &v3d->streamout;
789 uint32_t offset = (v3d->streamout.offsets[i] *
816 v3d_job_add_tf_write_resource(v3d->job,
823 if (v3d->dirty & V3D_DIRTY_OQ) {
825 if (v3d->active_queries && v3d->current_oq) {
826 counter.address = cl_address(v3d->current_oq, 0);
832 if (v3d->dirty & V3D_DIRTY_SAMPLE_STATE) {
838 state.mask = job->msaa ? v3d->sample_mask : 0xf;