Lines Matching +full:pre +full:- +full:blending

1 // SPDX-License-Identifier: GPL-2.0+
17 int src_offset = composer->offset + (y * composer->pitch) in get_pixel_from_buffer()
18 + (x * composer->cpp); in get_pixel_from_buffer()
26 * compute_crc - Compute CRC value on output frame
39 int x_src = composer->src.x1 >> 16; in compute_crc()
40 int y_src = composer->src.y1 >> 16; in compute_crc()
41 int h_src = drm_rect_height(&composer->src) >> 16; in compute_crc()
42 int w_src = drm_rect_width(&composer->src) >> 16; in compute_crc()
59 pre_blend = (src * 255 + dst * (255 - alpha)); in blend_channel()
68 * alpha_blend - alpha blending equation
73 * is that pixel color values have been already pre-multiplied with the alpha
88 * x_blend - blending equation that ignores the pixel alpha
98 * blend - blend value at vaddr_src with value at vaddr_dst
103 * @pixel_blend: blending equation based on plane format
122 int x_src = src_composer->src.x1 >> 16; in blend()
123 int y_src = src_composer->src.y1 >> 16; in blend()
125 int x_dst = src_composer->dst.x1; in blend()
126 int y_dst = src_composer->dst.y1; in blend()
127 int h_dst = drm_rect_height(&src_composer->dst); in blend()
128 int w_dst = drm_rect_width(&src_composer->dst); in blend()
135 offset_dst = dst_composer->offset in blend()
136 + (i_dst * dst_composer->pitch) in blend()
137 + (j_dst++ * dst_composer->cpp); in blend()
138 offset_src = src_composer->offset in blend()
139 + (i * src_composer->pitch) in blend()
140 + (j * src_composer->cpp); in blend()
156 struct drm_framebuffer *fb = &plane_composer->fb; in compose_plane()
160 if (WARN_ON(dma_buf_map_is_null(&primary_composer->map[0]))) in compose_plane()
163 vaddr = plane_composer->map[0].vaddr; in compose_plane()
165 if (fb->format->format == DRM_FORMAT_ARGB8888) in compose_plane()
177 struct drm_framebuffer *fb = &primary_composer->fb; in compose_active_planes()
183 *vaddr_out = kzalloc(gem_obj->size, GFP_KERNEL); in compose_active_planes()
186 return -ENOMEM; in compose_active_planes()
190 if (WARN_ON(dma_buf_map_is_null(&primary_composer->map[0]))) in compose_active_planes()
191 return -EINVAL; in compose_active_planes()
193 vaddr = primary_composer->map[0].vaddr; in compose_active_planes()
195 memcpy(*vaddr_out, vaddr, gem_obj->size); in compose_active_planes()
198 * planes should be in z-order and compose them associatively: in compose_active_planes()
199 * ((primary <- overlay) <- cursor) in compose_active_planes()
201 for (i = 1; i < crtc_state->num_active_planes; i++) in compose_active_planes()
203 crtc_state->active_planes[i]->composer, in compose_active_planes()
210 * vkms_composer_worker - ordered work_struct to compute CRC
223 struct drm_crtc *crtc = crtc_state->base.crtc; in vkms_composer_worker()
233 spin_lock_irq(&out->composer_lock); in vkms_composer_worker()
234 frame_start = crtc_state->frame_start; in vkms_composer_worker()
235 frame_end = crtc_state->frame_end; in vkms_composer_worker()
236 crc_pending = crtc_state->crc_pending; in vkms_composer_worker()
237 wb_pending = crtc_state->wb_pending; in vkms_composer_worker()
238 crtc_state->frame_start = 0; in vkms_composer_worker()
239 crtc_state->frame_end = 0; in vkms_composer_worker()
240 crtc_state->crc_pending = false; in vkms_composer_worker()
241 spin_unlock_irq(&out->composer_lock); in vkms_composer_worker()
250 if (crtc_state->num_active_planes >= 1) { in vkms_composer_worker()
251 act_plane = crtc_state->active_planes[0]; in vkms_composer_worker()
252 if (act_plane->base.base.plane->type == DRM_PLANE_TYPE_PRIMARY) in vkms_composer_worker()
253 primary_composer = act_plane->composer; in vkms_composer_worker()
260 vaddr_out = crtc_state->active_writeback->data[0].vaddr; in vkms_composer_worker()
265 if (ret == -EINVAL && !wb_pending) in vkms_composer_worker()
273 drm_writeback_signal_completion(&out->wb_connector, 0); in vkms_composer_worker()
274 spin_lock_irq(&out->composer_lock); in vkms_composer_worker()
275 crtc_state->wb_pending = false; in vkms_composer_worker()
276 spin_unlock_irq(&out->composer_lock); in vkms_composer_worker()
307 ret = -EINVAL; in vkms_crc_parse_source()
320 return -EINVAL; in vkms_verify_crc_source()
333 drm_crtc_vblank_get(&out->crtc); in vkms_set_composer()
335 spin_lock_irq(&out->lock); in vkms_set_composer()
336 old_enabled = out->composer_enabled; in vkms_set_composer()
337 out->composer_enabled = enabled; in vkms_set_composer()
338 spin_unlock_irq(&out->lock); in vkms_set_composer()
341 drm_crtc_vblank_put(&out->crtc); in vkms_set_composer()