Hi Kristian, Thank you for the patch! Yet something to improve: [auto build test ERROR on v4.16] [cannot apply to rockchip/for-next drm-exynos/exynos-drm/for-next v4.17-rc1 next-20180416] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Kristian-H-Kristensen/CHROMIUM-drm-rockchip-Disable-blending-for-win0/20180417-095916 config: arm64-defconfig (attached as .config) compiler: aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm64 All errors (new ones prefixed by >>): drivers/gpu/drm/rockchip/rockchip_drm_vop.c: In function 'vop_plane_atomic_update': >> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:800:46: error: 'win_index' undeclared (first use in this function); did you mean 'uuid_index'? if (is_alpha_support(fb->format->format) && win_index > 0) { ^~~~~~~~~ uuid_index drivers/gpu/drm/rockchip/rockchip_drm_vop.c:800:46: note: each undeclared identifier is reported only once for each function it appears in vim +800 drivers/gpu/drm/rockchip/rockchip_drm_vop.c 703 704 static void vop_plane_atomic_update(struct drm_plane *plane, 705 struct drm_plane_state *old_state) 706 { 707 struct drm_plane_state *state = plane->state; 708 struct drm_crtc *crtc = state->crtc; 709 struct vop_win *vop_win = to_vop_win(plane); 710 const struct vop_win_data *win = vop_win->data; 711 struct vop *vop = to_vop(state->crtc); 712 struct drm_framebuffer *fb = state->fb; 713 unsigned int actual_w, actual_h; 714 unsigned int dsp_stx, dsp_sty; 715 uint32_t act_info, dsp_info, dsp_st; 716 struct drm_rect *src = &state->src; 717 struct drm_rect *dest = &state->dst; 718 struct drm_gem_object *obj, *uv_obj; 719 struct rockchip_gem_object *rk_obj, *rk_uv_obj; 720 unsigned long offset; 721 dma_addr_t dma_addr; 722 uint32_t val; 723 bool rb_swap; 724 int format; 725 726 /* 727 * can't update plane when vop is disabled. 728 */ 729 if (WARN_ON(!crtc)) 730 return; 731 732 if (WARN_ON(!vop->is_enabled)) 733 return; 734 735 if (!state->visible) { 736 vop_plane_atomic_disable(plane, old_state); 737 return; 738 } 739 740 obj = rockchip_fb_get_gem_obj(fb, 0); 741 rk_obj = to_rockchip_obj(obj); 742 743 actual_w = drm_rect_width(src) >> 16; 744 actual_h = drm_rect_height(src) >> 16; 745 act_info = (actual_h - 1) << 16 | ((actual_w - 1) & 0xffff); 746 747 dsp_info = (drm_rect_height(dest) - 1) << 16; 748 dsp_info |= (drm_rect_width(dest) - 1) & 0xffff; 749 750 dsp_stx = dest->x1 + crtc->mode.htotal - crtc->mode.hsync_start; 751 dsp_sty = dest->y1 + crtc->mode.vtotal - crtc->mode.vsync_start; 752 dsp_st = dsp_sty << 16 | (dsp_stx & 0xffff); 753 754 offset = (src->x1 >> 16) * fb->format->cpp[0]; 755 offset += (src->y1 >> 16) * fb->pitches[0]; 756 dma_addr = rk_obj->dma_addr + offset + fb->offsets[0]; 757 758 format = vop_convert_format(fb->format->format); 759 760 spin_lock(&vop->reg_lock); 761 762 VOP_WIN_SET(vop, win, format, format); 763 VOP_WIN_SET(vop, win, yrgb_vir, DIV_ROUND_UP(fb->pitches[0], 4)); 764 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr); 765 if (is_yuv_support(fb->format->format)) { 766 int hsub = drm_format_horz_chroma_subsampling(fb->format->format); 767 int vsub = drm_format_vert_chroma_subsampling(fb->format->format); 768 int bpp = fb->format->cpp[1]; 769 770 uv_obj = rockchip_fb_get_gem_obj(fb, 1); 771 rk_uv_obj = to_rockchip_obj(uv_obj); 772 773 offset = (src->x1 >> 16) * bpp / hsub; 774 offset += (src->y1 >> 16) * fb->pitches[1] / vsub; 775 776 dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1]; 777 VOP_WIN_SET(vop, win, uv_vir, DIV_ROUND_UP(fb->pitches[1], 4)); 778 VOP_WIN_SET(vop, win, uv_mst, dma_addr); 779 } 780 781 if (win->phy->scl) 782 scl_vop_cal_scl_fac(vop, win, actual_w, actual_h, 783 drm_rect_width(dest), drm_rect_height(dest), 784 fb->format->format); 785 786 VOP_WIN_SET(vop, win, act_info, act_info); 787 VOP_WIN_SET(vop, win, dsp_info, dsp_info); 788 VOP_WIN_SET(vop, win, dsp_st, dsp_st); 789 790 rb_swap = has_rb_swapped(fb->format->format); 791 VOP_WIN_SET(vop, win, rb_swap, rb_swap); 792 793 /* 794 * Blending win0 with the background color doesn't seem to work 795 * correctly. We only get the background color, no matter the contents 796 * of the win0 framebuffer. However, blending pre-multiplied color 797 * with the default opaque black default background color is a no-op, 798 * so we can just disable blending to get the correct result. 799 */ > 800 if (is_alpha_support(fb->format->format) && win_index > 0) { 801 VOP_WIN_SET(vop, win, dst_alpha_ctl, 802 DST_FACTOR_M0(ALPHA_SRC_INVERSE)); 803 val = SRC_ALPHA_EN(1) | SRC_COLOR_M0(ALPHA_SRC_PRE_MUL) | 804 SRC_ALPHA_M0(ALPHA_STRAIGHT) | 805 SRC_BLEND_M0(ALPHA_PER_PIX) | 806 SRC_ALPHA_CAL_M0(ALPHA_NO_SATURATION) | 807 SRC_FACTOR_M0(ALPHA_ONE); 808 VOP_WIN_SET(vop, win, src_alpha_ctl, val); 809 } else { 810 VOP_WIN_SET(vop, win, src_alpha_ctl, SRC_ALPHA_EN(0)); 811 } 812 813 VOP_WIN_SET(vop, win, enable, 1); 814 spin_unlock(&vop->reg_lock); 815 } 816 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel