Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp10220288ybi; Thu, 11 Jul 2019 01:42:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqy5tM1AWbd6a/DvsDoq5lbpfHMQkHR0+x072/RAnZ/MVhkMuhwg6wWA8Ypk0fll8EN4I5xX X-Received: by 2002:a17:90a:24e4:: with SMTP id i91mr3597979pje.9.1562834556425; Thu, 11 Jul 2019 01:42:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562834556; cv=none; d=google.com; s=arc-20160816; b=usJTaRzYKO7ns+e/pCNV/Laax/SIPwMtIyJ/VFA+/Yt02MQNGJyCrGaeDntv7MOsYY iToh+etYl/YpUPT6skwN26MczXIA1e094SAtIlyK5OYWrsbcPnDSvHlF/8UaZYYWwPoA yV9bb3wAMnPndh0v143xo7EDfL7egiQp8c6XaPUueTtvsk0/wUtYQ7AyPM+3Qtju3GRx E4LKGZlShq5140OIdof+hNwu/G79jA09ZC4AygjUx1nE8PRMOTrwN2aY51MDNLbL8oTj aK/8uioJvcKiKXRjI3U82m4NBtWqZcXOpWcS1bIe/++IbK8DqTCOtoU785f7BVQ1A2yL 4ipw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:dkim-signature; bh=n+dvTrBf0uIEHmgrQiWLE1pIWRGhwHdadcLbGup9mXA=; b=r6uM7NYHUTHgRe/SWYYOkLn48Z28jdqPwLKji/0aAXFmHKxEtytu0onBQhVpE4HJil DJQSFsZwJH9IyYu9hYHTqrq0b9aE+/Edqdf+AlXqvZhq16LHt3+2rnIsMGhvwk9k+vcs 3UeFkJOONQFkphoHCKJjV/jNphnJbo8bci+UYjRgf4JTstwi3qURebuLlzrUDbpCkaQb V61vk6YKenwegXImUzJ5Q1Ts/pdXbFPpTvxa/8mi4E+VX5FoY+djcdn/2eMM23uHxBVF NjmmPfVnr1lEQeTdp6kt83GpqBBRVp6YIjf7eYmPULhX6sg/89ClLct4IUUxC7GQHwPD As4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@ffwll.ch header.s=google header.b=BZafYq7p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z185si4719410pfb.109.2019.07.11.01.42.20; Thu, 11 Jul 2019 01:42:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@ffwll.ch header.s=google header.b=BZafYq7p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728041AbfGKIKb (ORCPT + 99 others); Thu, 11 Jul 2019 04:10:31 -0400 Received: from mail-ed1-f68.google.com ([209.85.208.68]:41683 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727929AbfGKIKa (ORCPT ); Thu, 11 Jul 2019 04:10:30 -0400 Received: by mail-ed1-f68.google.com with SMTP id p15so4846818eds.8 for ; Thu, 11 Jul 2019 01:10:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=n+dvTrBf0uIEHmgrQiWLE1pIWRGhwHdadcLbGup9mXA=; b=BZafYq7pnMX8JmZDrFo7QLhUZp1oSLN5xBigHodzEe+wdQ9+N72UWoBVNzzWXwbdRc AesuuZ9BJ+0eMgW06Uy5d4HRW4leJlg9oxiWJKwTcYzHhXSEGG1cs5x0hECEBGlHEhrl xtqt/CrLzfyApu5KGGbg72UwYkNBjENsbnNEw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=n+dvTrBf0uIEHmgrQiWLE1pIWRGhwHdadcLbGup9mXA=; b=DAnDhJt0w/1AYH8Ia/HkAyAQQ6knWUqHZ0dB/b2l482X2LSr0jXNmn6l8FCa6sh7HS hQqn9xqeZ8CW6A72D/51dvVS6/KBexGUbsFS3IpoF5ZJzZQ2kN4Ip+QQVG9kByqatplC lJCMlDkz+AaDitST/vR5ZWJWvkNTCoUG9LbfRYPa2Op7W2tHL5Zylk0bVAALSvwjQMJE BN27Yo0C20WiZSwlCvzBG6VUjUBfHGBdclqneBxCVPe4fVlfg/BVxoKPDQTK3tFvSR8Q xY7ffnd22Ab+ywnj/lVCZmtgBFIJylacJjLtdXy6M+20jQO7agxGMffU9FHzohC01Or1 M4Vw== X-Gm-Message-State: APjAAAWzaMuMr5Tzg+6gZj4DyTs/DperhuqKIoWlu+RLkgg7F6n/gHfP 3W0l5qETHbFuRHvIWFw6w0YHm0Ao X-Received: by 2002:a17:906:190e:: with SMTP id a14mr1971380eje.69.1562832627886; Thu, 11 Jul 2019 01:10:27 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id b30sm1452512ede.88.2019.07.11.01.10.26 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 11 Jul 2019 01:10:27 -0700 (PDT) Date: Thu, 11 Jul 2019 10:10:25 +0200 From: Daniel Vetter To: Rodrigo Siqueira Cc: Brian Starkey , Liviu Dudau , Daniel Vetter , Haneen Mohammed , Simon Ser , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH V3 2/5] drm/vkms: Rename vkms_crc.c into vkms_composer.c Message-ID: <20190711081025.GG15868@phenom.ffwll.local> Mail-Followup-To: Rodrigo Siqueira , Brian Starkey , Liviu Dudau , Haneen Mohammed , Simon Ser , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: Linux phenom 4.19.0-5-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 25, 2019 at 10:37:05PM -0300, Rodrigo Siqueira wrote: > As a preparation work for introducing writeback to vkms, this patch > renames the file vkms_crc.c into vkms_composer.c. Accordingly, it also > adjusts the functions and data structures to match the changes. > > No functional change. > > Signed-off-by: Rodrigo Siqueira Acked-by: Daniel Vetter Too lazy to check it still compiles :-) -Daniel > --- > drivers/gpu/drm/vkms/Makefile | 2 +- > .../drm/vkms/{vkms_crc.c => vkms_composer.c} | 98 ++++++++++--------- > drivers/gpu/drm/vkms/vkms_crtc.c | 30 +++--- > drivers/gpu/drm/vkms/vkms_drv.c | 4 +- > drivers/gpu/drm/vkms/vkms_drv.h | 28 +++--- > drivers/gpu/drm/vkms/vkms_plane.c | 36 +++---- > 6 files changed, 101 insertions(+), 97 deletions(-) > rename drivers/gpu/drm/vkms/{vkms_crc.c => vkms_composer.c} (65%) > > diff --git a/drivers/gpu/drm/vkms/Makefile b/drivers/gpu/drm/vkms/Makefile > index 89f09bec7b23..0b767d7efa24 100644 > --- a/drivers/gpu/drm/vkms/Makefile > +++ b/drivers/gpu/drm/vkms/Makefile > @@ -1,4 +1,4 @@ > # SPDX-License-Identifier: GPL-2.0-only > -vkms-y := vkms_drv.o vkms_plane.o vkms_output.o vkms_crtc.o vkms_gem.o vkms_crc.o > +vkms-y := vkms_drv.o vkms_plane.o vkms_output.o vkms_crtc.o vkms_gem.o vkms_composer.o > > obj-$(CONFIG_DRM_VKMS) += vkms.o > diff --git a/drivers/gpu/drm/vkms/vkms_crc.c b/drivers/gpu/drm/vkms/vkms_composer.c > similarity index 65% > rename from drivers/gpu/drm/vkms/vkms_crc.c > rename to drivers/gpu/drm/vkms/vkms_composer.c > index 30b048b67a32..eb7ea8be1f98 100644 > --- a/drivers/gpu/drm/vkms/vkms_crc.c > +++ b/drivers/gpu/drm/vkms/vkms_composer.c > @@ -10,25 +10,25 @@ > * compute_crc - Compute CRC value on output frame > * > * @vaddr_out: address to final framebuffer > - * @crc_out: framebuffer's metadata > + * @composer: framebuffer's metadata > * > * returns CRC value computed using crc32 on the visible portion of > * the final framebuffer at vaddr_out > */ > -static uint32_t compute_crc(void *vaddr_out, struct vkms_crc_data *crc_out) > +static uint32_t compute_crc(void *vaddr_out, struct vkms_composer *composer) > { > int i, j, src_offset; > - int x_src = crc_out->src.x1 >> 16; > - int y_src = crc_out->src.y1 >> 16; > - int h_src = drm_rect_height(&crc_out->src) >> 16; > - int w_src = drm_rect_width(&crc_out->src) >> 16; > + int x_src = composer->src.x1 >> 16; > + int y_src = composer->src.y1 >> 16; > + int h_src = drm_rect_height(&composer->src) >> 16; > + int w_src = drm_rect_width(&composer->src) >> 16; > u32 crc = 0; > > for (i = y_src; i < y_src + h_src; ++i) { > for (j = x_src; j < x_src + w_src; ++j) { > - src_offset = crc_out->offset > - + (i * crc_out->pitch) > - + (j * crc_out->cpp); > + src_offset = composer->offset > + + (i * composer->pitch) > + + (j * composer->cpp); > /* XRGB format ignores Alpha channel */ > memset(vaddr_out + src_offset + 24, 0, 8); > crc = crc32_le(crc, vaddr_out + src_offset, > @@ -43,8 +43,8 @@ static uint32_t compute_crc(void *vaddr_out, struct vkms_crc_data *crc_out) > * blend - belnd value at vaddr_src with value at vaddr_dst > * @vaddr_dst: destination address > * @vaddr_src: source address > - * @crc_dst: destination framebuffer's metadata > - * @crc_src: source framebuffer's metadata > + * @dest_composer: destination framebuffer's metadata > + * @src_composer: source framebuffer's metadata > * > * Blend value at vaddr_src with value at vaddr_dst. > * Currently, this function write value at vaddr_src on value > @@ -55,31 +55,31 @@ static uint32_t compute_crc(void *vaddr_out, struct vkms_crc_data *crc_out) > * instead of overwriting it. > */ > static void blend(void *vaddr_dst, void *vaddr_src, > - struct vkms_crc_data *crc_dst, > - struct vkms_crc_data *crc_src) > + struct vkms_composer *dest_composer, > + struct vkms_composer *src_composer) > { > int i, j, j_dst, i_dst; > int offset_src, offset_dst; > > - int x_src = crc_src->src.x1 >> 16; > - int y_src = crc_src->src.y1 >> 16; > + int x_src = src_composer->src.x1 >> 16; > + int y_src = src_composer->src.y1 >> 16; > > - int x_dst = crc_src->dst.x1; > - int y_dst = crc_src->dst.y1; > - int h_dst = drm_rect_height(&crc_src->dst); > - int w_dst = drm_rect_width(&crc_src->dst); > + int x_dst = src_composer->dst.x1; > + int y_dst = src_composer->dst.y1; > + int h_dst = drm_rect_height(&src_composer->dst); > + int w_dst = drm_rect_width(&src_composer->dst); > > int y_limit = y_src + h_dst; > int x_limit = x_src + w_dst; > > for (i = y_src, i_dst = y_dst; i < y_limit; ++i) { > for (j = x_src, j_dst = x_dst; j < x_limit; ++j) { > - offset_dst = crc_dst->offset > - + (i_dst * crc_dst->pitch) > - + (j_dst++ * crc_dst->cpp); > - offset_src = crc_src->offset > - + (i * crc_src->pitch) > - + (j * crc_src->cpp); > + offset_dst = dest_composer->offset > + + (i_dst * dest_composer->pitch) > + + (j_dst++ * dest_composer->cpp); > + offset_src = src_composer->offset > + + (i * src_composer->pitch) > + + (j * src_composer->cpp); > > memcpy(vaddr_dst + offset_dst, > vaddr_src + offset_src, sizeof(u32)); > @@ -88,25 +88,27 @@ static void blend(void *vaddr_dst, void *vaddr_src, > } > } > > -static void compose_cursor(struct vkms_crc_data *cursor_crc, > - struct vkms_crc_data *primary_crc, void *vaddr_out) > +static void compose_cursor(struct vkms_composer *cursor_composer, > + struct vkms_composer *primary_composer, > + void *vaddr_out) > { > struct drm_gem_object *cursor_obj; > struct vkms_gem_object *cursor_vkms_obj; > > - cursor_obj = drm_gem_fb_get_obj(&cursor_crc->fb, 0); > + cursor_obj = drm_gem_fb_get_obj(&cursor_composer->fb, 0); > cursor_vkms_obj = drm_gem_to_vkms_gem(cursor_obj); > > if (WARN_ON(!cursor_vkms_obj->vaddr)) > return; > > - blend(vaddr_out, cursor_vkms_obj->vaddr, primary_crc, cursor_crc); > + blend(vaddr_out, cursor_vkms_obj->vaddr, > + primary_composer, cursor_composer); > } > > -static uint32_t _vkms_get_crc(struct vkms_crc_data *primary_crc, > - struct vkms_crc_data *cursor_crc) > +static uint32_t _vkms_get_crc(struct vkms_composer *primary_composer, > + struct vkms_composer *cursor_composer) > { > - struct drm_framebuffer *fb = &primary_crc->fb; > + struct drm_framebuffer *fb = &primary_composer->fb; > struct drm_gem_object *gem_obj = drm_gem_fb_get_obj(fb, 0); > struct vkms_gem_object *vkms_obj = drm_gem_to_vkms_gem(gem_obj); > void *vaddr_out = kzalloc(vkms_obj->gem.size, GFP_KERNEL); > @@ -124,10 +126,10 @@ static uint32_t _vkms_get_crc(struct vkms_crc_data *primary_crc, > > memcpy(vaddr_out, vkms_obj->vaddr, vkms_obj->gem.size); > > - if (cursor_crc) > - compose_cursor(cursor_crc, primary_crc, vaddr_out); > + if (cursor_composer) > + compose_cursor(cursor_composer, primary_composer, vaddr_out); > > - crc = compute_crc(vaddr_out, primary_crc); > + crc = compute_crc(vaddr_out, primary_composer); > > kfree(vaddr_out); > > @@ -135,35 +137,35 @@ static uint32_t _vkms_get_crc(struct vkms_crc_data *primary_crc, > } > > /** > - * vkms_crc_work_handle - ordered work_struct to compute CRC > + * vkms_composer_worker - ordered work_struct to compute CRC > * > * @work: work_struct > * > - * Work handler for computing CRCs. work_struct scheduled in > + * Work handler for composing and computing CRCs. work_struct scheduled in > * an ordered workqueue that's periodically scheduled to run by > * _vblank_handle() and flushed at vkms_atomic_crtc_destroy_state(). > */ > -void vkms_crc_work_handle(struct work_struct *work) > +void vkms_composer_worker(struct work_struct *work) > { > struct vkms_crtc_state *crtc_state = container_of(work, > struct vkms_crtc_state, > - crc_work); > + composer_work); > struct drm_crtc *crtc = crtc_state->base.crtc; > struct vkms_output *out = drm_crtc_to_vkms_output(crtc); > - struct vkms_crc_data *primary_crc = NULL; > - struct vkms_crc_data *cursor_crc = NULL; > + struct vkms_composer *primary_composer = NULL; > + struct vkms_composer *cursor_composer = NULL; > u32 crc32 = 0; > u64 frame_start, frame_end; > bool crc_pending; > > - spin_lock_irq(&out->crc_lock); > + spin_lock_irq(&out->composer_lock); > frame_start = crtc_state->frame_start; > frame_end = crtc_state->frame_end; > crc_pending = crtc_state->crc_pending; > crtc_state->frame_start = 0; > crtc_state->frame_end = 0; > crtc_state->crc_pending = false; > - spin_unlock_irq(&out->crc_lock); > + spin_unlock_irq(&out->composer_lock); > > /* > * We raced with the vblank hrtimer and previous work already computed > @@ -173,13 +175,13 @@ void vkms_crc_work_handle(struct work_struct *work) > return; > > if (crtc_state->num_active_planes >= 1) > - primary_crc = crtc_state->active_planes[0]->crc_data; > + primary_composer = crtc_state->active_planes[0]->composer; > > if (crtc_state->num_active_planes == 2) > - cursor_crc = crtc_state->active_planes[1]->crc_data; > + cursor_composer = crtc_state->active_planes[1]->composer; > > - if (primary_crc) > - crc32 = _vkms_get_crc(primary_crc, cursor_crc); > + if (primary_composer) > + crc32 = _vkms_get_crc(primary_composer, cursor_composer); > > /* > * The worker can fall behind the vblank hrtimer, make sure we catch up. > @@ -237,7 +239,7 @@ int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name) > ret = vkms_crc_parse_source(src_name, &enabled); > > spin_lock_irq(&out->lock); > - out->crc_enabled = enabled; > + out->composer_enabled = enabled; > spin_unlock_irq(&out->lock); > > return ret; > diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c > index a648892379c3..04c6f4250dea 100644 > --- a/drivers/gpu/drm/vkms/vkms_crtc.c > +++ b/drivers/gpu/drm/vkms/vkms_crtc.c > @@ -24,14 +24,14 @@ static enum hrtimer_restart vkms_vblank_simulate(struct hrtimer *timer) > if (!ret) > DRM_ERROR("vkms failure on handling vblank"); > > - state = output->crc_state; > - if (state && output->crc_enabled) { > + state = output->composer_state; > + if (state && output->composer_enabled) { > u64 frame = drm_crtc_accurate_vblank_count(crtc); > > - /* update frame_start only if a queued vkms_crc_work_handle() > + /* update frame_start only if a queued vkms_composer_worker() > * has read the data > */ > - spin_lock(&output->crc_lock); > + spin_lock(&output->composer_lock); > if (!state->crc_pending) > state->frame_start = frame; > else > @@ -39,11 +39,11 @@ static enum hrtimer_restart vkms_vblank_simulate(struct hrtimer *timer) > state->frame_start, frame); > state->frame_end = frame; > state->crc_pending = true; > - spin_unlock(&output->crc_lock); > + spin_unlock(&output->composer_lock); > > - ret = queue_work(output->crc_workq, &state->crc_work); > + ret = queue_work(output->composer_workq, &state->composer_work); > if (!ret) > - DRM_DEBUG_DRIVER("vkms_crc_work_handle already queued\n"); > + DRM_DEBUG_DRIVER("Composer worker already queued\n"); > } > > spin_unlock(&output->lock); > @@ -114,7 +114,7 @@ vkms_atomic_crtc_duplicate_state(struct drm_crtc *crtc) > > __drm_atomic_helper_crtc_duplicate_state(crtc, &vkms_state->base); > > - INIT_WORK(&vkms_state->crc_work, vkms_crc_work_handle); > + INIT_WORK(&vkms_state->composer_work, vkms_composer_worker); > > return &vkms_state->base; > } > @@ -126,7 +126,7 @@ static void vkms_atomic_crtc_destroy_state(struct drm_crtc *crtc, > > __drm_atomic_helper_crtc_destroy_state(state); > > - WARN_ON(work_pending(&vkms_state->crc_work)); > + WARN_ON(work_pending(&vkms_state->composer_work)); > kfree(vkms_state->active_planes); > kfree(vkms_state); > } > @@ -141,7 +141,7 @@ static void vkms_atomic_crtc_reset(struct drm_crtc *crtc) > > __drm_atomic_helper_crtc_reset(crtc, &vkms_state->base); > if (vkms_state) > - INIT_WORK(&vkms_state->crc_work, vkms_crc_work_handle); > + INIT_WORK(&vkms_state->composer_work, vkms_composer_worker); > } > > static const struct drm_crtc_funcs vkms_crtc_funcs = { > @@ -222,7 +222,7 @@ static void vkms_crtc_atomic_begin(struct drm_crtc *crtc, > struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc); > > /* This lock is held across the atomic commit to block vblank timer > - * from scheduling vkms_crc_work_handle until the crc_data is updated > + * from scheduling vkms_composer_worker until the composer is updated > */ > spin_lock_irq(&vkms_output->lock); > } > @@ -245,7 +245,7 @@ static void vkms_crtc_atomic_flush(struct drm_crtc *crtc, > crtc->state->event = NULL; > } > > - vkms_output->crc_state = to_vkms_crtc_state(crtc->state); > + vkms_output->composer_state = to_vkms_crtc_state(crtc->state); > > spin_unlock_irq(&vkms_output->lock); > } > @@ -274,10 +274,10 @@ int vkms_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, > drm_crtc_helper_add(crtc, &vkms_crtc_helper_funcs); > > spin_lock_init(&vkms_out->lock); > - spin_lock_init(&vkms_out->crc_lock); > + spin_lock_init(&vkms_out->composer_lock); > > - vkms_out->crc_workq = alloc_ordered_workqueue("vkms_crc_workq", 0); > - if (!vkms_out->crc_workq) > + vkms_out->composer_workq = alloc_ordered_workqueue("vkms_composer", 0); > + if (!vkms_out->composer_workq) > return -ENOMEM; > > return ret; > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c > index 966b3d653189..ac790b6527e4 100644 > --- a/drivers/gpu/drm/vkms/vkms_drv.c > +++ b/drivers/gpu/drm/vkms/vkms_drv.c > @@ -56,7 +56,7 @@ static void vkms_release(struct drm_device *dev) > drm_atomic_helper_shutdown(&vkms->drm); > drm_mode_config_cleanup(&vkms->drm); > drm_dev_fini(&vkms->drm); > - destroy_workqueue(vkms->output.crc_workq); > + destroy_workqueue(vkms->output.composer_workq); > } > > static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state) > @@ -82,7 +82,7 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state) > struct vkms_crtc_state *vkms_state = > to_vkms_crtc_state(old_crtc_state); > > - flush_work(&vkms_state->crc_work); > + flush_work(&vkms_state->composer_work); > } > > drm_atomic_helper_cleanup_planes(dev, old_state); > diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h > index e2d1aa089dec..fc6cda164336 100644 > --- a/drivers/gpu/drm/vkms/vkms_drv.h > +++ b/drivers/gpu/drm/vkms/vkms_drv.h > @@ -20,7 +20,7 @@ > > extern bool enable_cursor; > > -struct vkms_crc_data { > +struct vkms_composer { > struct drm_framebuffer fb; > struct drm_rect src, dst; > unsigned int offset; > @@ -31,29 +31,29 @@ struct vkms_crc_data { > /** > * vkms_plane_state - Driver specific plane state > * @base: base plane state > - * @crc_data: data required for CRC computation > + * @composer: data required for composing computation > */ > struct vkms_plane_state { > struct drm_plane_state base; > - struct vkms_crc_data *crc_data; > + struct vkms_composer *composer; > }; > > /** > * vkms_crtc_state - Driver specific CRTC state > * @base: base CRTC state > - * @crc_work: work struct to compute and add CRC entries > + * @composer_work: work struct to compose and add CRC entries > * @n_frame_start: start frame number for computed CRC > * @n_frame_end: end frame number for computed CRC > */ > struct vkms_crtc_state { > struct drm_crtc_state base; > - struct work_struct crc_work; > + struct work_struct composer_work; > > int num_active_planes; > /* stack of active planes for crc computation, should be in z order */ > struct vkms_plane_state **active_planes; > > - /* below three are protected by vkms_output.crc_lock */ > + /* below three are protected by vkms_output.composer_lock */ > bool crc_pending; > u64 frame_start; > u64 frame_end; > @@ -66,16 +66,16 @@ struct vkms_output { > struct hrtimer vblank_hrtimer; > ktime_t period_ns; > struct drm_pending_vblank_event *event; > - /* ordered wq for crc_work */ > - struct workqueue_struct *crc_workq; > - /* protects concurrent access to crc_data */ > + /* ordered wq for composer_work */ > + struct workqueue_struct *composer_workq; > + /* protects concurrent access to composer */ > spinlock_t lock; > > /* protected by @lock */ > - bool crc_enabled; > - struct vkms_crtc_state *crc_state; > + bool composer_enabled; > + struct vkms_crtc_state *composer_state; > > - spinlock_t crc_lock; > + spinlock_t composer_lock; > }; > > struct vkms_device { > @@ -143,6 +143,8 @@ const char *const *vkms_get_crc_sources(struct drm_crtc *crtc, > int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name); > int vkms_verify_crc_source(struct drm_crtc *crtc, const char *source_name, > size_t *values_cnt); > -void vkms_crc_work_handle(struct work_struct *work); > + > +/* Composer Support */ > +void vkms_composer_worker(struct work_struct *work); > > #endif /* _VKMS_DRV_H_ */ > diff --git a/drivers/gpu/drm/vkms/vkms_plane.c b/drivers/gpu/drm/vkms/vkms_plane.c > index 18c630cfc485..8b60d3434d75 100644 > --- a/drivers/gpu/drm/vkms/vkms_plane.c > +++ b/drivers/gpu/drm/vkms/vkms_plane.c > @@ -18,20 +18,20 @@ static struct drm_plane_state * > vkms_plane_duplicate_state(struct drm_plane *plane) > { > struct vkms_plane_state *vkms_state; > - struct vkms_crc_data *crc_data; > + struct vkms_composer *composer; > > vkms_state = kzalloc(sizeof(*vkms_state), GFP_KERNEL); > if (!vkms_state) > return NULL; > > - crc_data = kzalloc(sizeof(*crc_data), GFP_KERNEL); > - if (!crc_data) { > - DRM_DEBUG_KMS("Couldn't allocate crc_data\n"); > + composer = kzalloc(sizeof(*composer), GFP_KERNEL); > + if (!composer) { > + DRM_DEBUG_KMS("Couldn't allocate composer\n"); > kfree(vkms_state); > return NULL; > } > > - vkms_state->crc_data = crc_data; > + vkms_state->composer = composer; > > __drm_atomic_helper_plane_duplicate_state(plane, > &vkms_state->base); > @@ -49,12 +49,12 @@ static void vkms_plane_destroy_state(struct drm_plane *plane, > /* dropping the reference we acquired in > * vkms_primary_plane_update() > */ > - if (drm_framebuffer_read_refcount(&vkms_state->crc_data->fb)) > - drm_framebuffer_put(&vkms_state->crc_data->fb); > + if (drm_framebuffer_read_refcount(&vkms_state->composer->fb)) > + drm_framebuffer_put(&vkms_state->composer->fb); > } > > - kfree(vkms_state->crc_data); > - vkms_state->crc_data = NULL; > + kfree(vkms_state->composer); > + vkms_state->composer = NULL; > > __drm_atomic_helper_plane_destroy_state(old_state); > kfree(vkms_state); > @@ -91,21 +91,21 @@ static void vkms_plane_atomic_update(struct drm_plane *plane, > { > struct vkms_plane_state *vkms_plane_state; > struct drm_framebuffer *fb = plane->state->fb; > - struct vkms_crc_data *crc_data; > + struct vkms_composer *composer; > > if (!plane->state->crtc || !fb) > return; > > vkms_plane_state = to_vkms_plane_state(plane->state); > > - crc_data = vkms_plane_state->crc_data; > - memcpy(&crc_data->src, &plane->state->src, sizeof(struct drm_rect)); > - memcpy(&crc_data->dst, &plane->state->dst, sizeof(struct drm_rect)); > - memcpy(&crc_data->fb, fb, sizeof(struct drm_framebuffer)); > - drm_framebuffer_get(&crc_data->fb); > - crc_data->offset = fb->offsets[0]; > - crc_data->pitch = fb->pitches[0]; > - crc_data->cpp = fb->format->cpp[0]; > + composer = vkms_plane_state->composer; > + memcpy(&composer->src, &plane->state->src, sizeof(struct drm_rect)); > + memcpy(&composer->dst, &plane->state->dst, sizeof(struct drm_rect)); > + memcpy(&composer->fb, fb, sizeof(struct drm_framebuffer)); > + drm_framebuffer_get(&composer->fb); > + composer->offset = fb->offsets[0]; > + composer->pitch = fb->pitches[0]; > + composer->cpp = fb->format->cpp[0]; > } > > static int vkms_plane_atomic_check(struct drm_plane *plane, > -- > 2.21.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch