Lines Matching refs:asyw

114 nv50_wndw_wait_armed(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw)  in nv50_wndw_wait_armed()  argument
117 if (asyw->set.ntfy) { in nv50_wndw_wait_armed()
119 asyw->ntfy.offset, in nv50_wndw_wait_armed()
127 struct nv50_wndw_atom *asyw) in nv50_wndw_flush_clr() argument
130 .mask = asyw->clr.mask & ~(flush ? 0 : asyw->set.mask), in nv50_wndw_flush_clr()
143 struct nv50_wndw_atom *asyw) in nv50_wndw_flush_set() argument
146 asyw->image.mode = NV507C_SET_PRESENT_CONTROL_BEGIN_MODE_NON_TEARING; in nv50_wndw_flush_set()
147 asyw->image.interval = 1; in nv50_wndw_flush_set()
150 if (asyw->set.sema ) wndw->func->sema_set (wndw, asyw); in nv50_wndw_flush_set()
151 if (asyw->set.ntfy ) wndw->func->ntfy_set (wndw, asyw); in nv50_wndw_flush_set()
152 if (asyw->set.image) wndw->func->image_set(wndw, asyw); in nv50_wndw_flush_set()
154 if (asyw->set.xlut ) { in nv50_wndw_flush_set()
155 if (asyw->ilut) { in nv50_wndw_flush_set()
156 asyw->xlut.i.offset = in nv50_wndw_flush_set()
157 nv50_lut_load(&wndw->ilut, asyw->xlut.i.buffer, in nv50_wndw_flush_set()
158 asyw->ilut, asyw->xlut.i.load); in nv50_wndw_flush_set()
160 wndw->func->xlut_set(wndw, asyw); in nv50_wndw_flush_set()
163 if (asyw->set.csc ) wndw->func->csc_set (wndw, asyw); in nv50_wndw_flush_set()
164 if (asyw->set.scale) wndw->func->scale_set(wndw, asyw); in nv50_wndw_flush_set()
165 if (asyw->set.blend) wndw->func->blend_set(wndw, asyw); in nv50_wndw_flush_set()
166 if (asyw->set.point) { in nv50_wndw_flush_set()
167 if (asyw->set.point = false, asyw->set.mask) in nv50_wndw_flush_set()
171 wndw->immd->point(wndw, asyw); in nv50_wndw_flush_set()
179 nv50_wndw_ntfy_enable(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw) in nv50_wndw_ntfy_enable() argument
183 asyw->ntfy.handle = wndw->wndw.sync.handle; in nv50_wndw_ntfy_enable()
184 asyw->ntfy.offset = wndw->ntfy; in nv50_wndw_ntfy_enable()
185 asyw->ntfy.awaken = false; in nv50_wndw_ntfy_enable()
186 asyw->set.ntfy = true; in nv50_wndw_ntfy_enable()
194 struct nv50_wndw_atom *asyw, in nv50_wndw_atomic_check_release() argument
199 wndw->func->release(wndw, asyw, asyh); in nv50_wndw_atomic_check_release()
200 asyw->ntfy.handle = 0; in nv50_wndw_atomic_check_release()
201 asyw->sema.handle = 0; in nv50_wndw_atomic_check_release()
202 asyw->xlut.handle = 0; in nv50_wndw_atomic_check_release()
203 memset(asyw->image.handle, 0x00, sizeof(asyw->image.handle)); in nv50_wndw_atomic_check_release()
207 nv50_wndw_atomic_check_acquire_yuv(struct nv50_wndw_atom *asyw) in nv50_wndw_atomic_check_acquire_yuv() argument
209 switch (asyw->state.fb->format->format) { in nv50_wndw_atomic_check_acquire_yuv()
211 asyw->image.format = NV507E_SURFACE_SET_PARAMS_FORMAT_VE8YO8UE8YE8; in nv50_wndw_atomic_check_acquire_yuv()
214 asyw->image.format = NV507E_SURFACE_SET_PARAMS_FORMAT_YO8VE8YE8UE8; in nv50_wndw_atomic_check_acquire_yuv()
221 asyw->image.colorspace = NV507E_SURFACE_SET_PARAMS_COLOR_SPACE_YUV_601; in nv50_wndw_atomic_check_acquire_yuv()
226 nv50_wndw_atomic_check_acquire_rgb(struct nv50_wndw_atom *asyw) in nv50_wndw_atomic_check_acquire_rgb() argument
228 switch (asyw->state.fb->format->format) { in nv50_wndw_atomic_check_acquire_rgb()
230 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_I8; in nv50_wndw_atomic_check_acquire_rgb()
234 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A8R8G8B8; in nv50_wndw_atomic_check_acquire_rgb()
237 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_R5G6B5; in nv50_wndw_atomic_check_acquire_rgb()
241 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A1R5G5B5; in nv50_wndw_atomic_check_acquire_rgb()
245 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A2B10G10R10; in nv50_wndw_atomic_check_acquire_rgb()
249 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A8B8G8R8; in nv50_wndw_atomic_check_acquire_rgb()
253 asyw->image.format = NVC37E_SET_PARAMS_FORMAT_A2R10G10B10; in nv50_wndw_atomic_check_acquire_rgb()
257 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_RF16_GF16_BF16_AF16; in nv50_wndw_atomic_check_acquire_rgb()
263 asyw->image.colorspace = NV507E_SURFACE_SET_PARAMS_COLOR_SPACE_RGB; in nv50_wndw_atomic_check_acquire_rgb()
270 struct nv50_wndw_atom *asyw, in nv50_wndw_atomic_check_acquire() argument
273 struct drm_framebuffer *fb = asyw->state.fb; in nv50_wndw_atomic_check_acquire()
284 asyw->image.w = fb->width; in nv50_wndw_atomic_check_acquire()
285 asyw->image.h = fb->height; in nv50_wndw_atomic_check_acquire()
286 asyw->image.kind = kind; in nv50_wndw_atomic_check_acquire()
288 ret = nv50_wndw_atomic_check_acquire_rgb(asyw); in nv50_wndw_atomic_check_acquire()
290 ret = nv50_wndw_atomic_check_acquire_yuv(asyw); in nv50_wndw_atomic_check_acquire()
295 if (asyw->image.kind) { in nv50_wndw_atomic_check_acquire()
296 asyw->image.layout = NV507C_SURFACE_SET_STORAGE_MEMORY_LAYOUT_BLOCKLINEAR; in nv50_wndw_atomic_check_acquire()
298 asyw->image.blockh = tile_mode >> 4; in nv50_wndw_atomic_check_acquire()
300 asyw->image.blockh = tile_mode; in nv50_wndw_atomic_check_acquire()
301 asyw->image.blocks[0] = fb->pitches[0] / 64; in nv50_wndw_atomic_check_acquire()
302 asyw->image.pitch[0] = 0; in nv50_wndw_atomic_check_acquire()
304 asyw->image.layout = NV507C_SURFACE_SET_STORAGE_MEMORY_LAYOUT_PITCH; in nv50_wndw_atomic_check_acquire()
305 asyw->image.blockh = NV507C_SURFACE_SET_STORAGE_BLOCK_HEIGHT_ONE_GOB; in nv50_wndw_atomic_check_acquire()
306 asyw->image.blocks[0] = 0; in nv50_wndw_atomic_check_acquire()
307 asyw->image.pitch[0] = fb->pitches[0]; in nv50_wndw_atomic_check_acquire()
311 asyw->image.interval = 1; in nv50_wndw_atomic_check_acquire()
313 asyw->image.interval = 0; in nv50_wndw_atomic_check_acquire()
315 if (asyw->image.interval) in nv50_wndw_atomic_check_acquire()
316 asyw->image.mode = NV507C_SET_PRESENT_CONTROL_BEGIN_MODE_NON_TEARING; in nv50_wndw_atomic_check_acquire()
318 asyw->image.mode = NV507C_SET_PRESENT_CONTROL_BEGIN_MODE_IMMEDIATE; in nv50_wndw_atomic_check_acquire()
320 asyw->set.image = wndw->func->image_set != NULL; in nv50_wndw_atomic_check_acquire()
324 asyw->scale.sx = asyw->state.src_x >> 16; in nv50_wndw_atomic_check_acquire()
325 asyw->scale.sy = asyw->state.src_y >> 16; in nv50_wndw_atomic_check_acquire()
326 asyw->scale.sw = asyw->state.src_w >> 16; in nv50_wndw_atomic_check_acquire()
327 asyw->scale.sh = asyw->state.src_h >> 16; in nv50_wndw_atomic_check_acquire()
328 asyw->scale.dw = asyw->state.crtc_w; in nv50_wndw_atomic_check_acquire()
329 asyw->scale.dh = asyw->state.crtc_h; in nv50_wndw_atomic_check_acquire()
330 if (memcmp(&armw->scale, &asyw->scale, sizeof(asyw->scale))) in nv50_wndw_atomic_check_acquire()
331 asyw->set.scale = true; in nv50_wndw_atomic_check_acquire()
335 asyw->blend.depth = 255 - asyw->state.normalized_zpos; in nv50_wndw_atomic_check_acquire()
336 asyw->blend.k1 = asyw->state.alpha >> 8; in nv50_wndw_atomic_check_acquire()
337 switch (asyw->state.pixel_blend_mode) { in nv50_wndw_atomic_check_acquire()
339 asyw->blend.src_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_SRC_COLOR_FACTOR_MATCH_SELECT_K1; in nv50_wndw_atomic_check_acquire()
340asyw->blend.dst_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_DST_COLOR_FACTOR_MATCH_SELECT_NEG_K1_… in nv50_wndw_atomic_check_acquire()
343asyw->blend.src_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_SRC_COLOR_FACTOR_MATCH_SELECT_K1_TIME… in nv50_wndw_atomic_check_acquire()
344asyw->blend.dst_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_DST_COLOR_FACTOR_MATCH_SELECT_NEG_K1_… in nv50_wndw_atomic_check_acquire()
348 asyw->blend.src_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_SRC_COLOR_FACTOR_MATCH_SELECT_K1; in nv50_wndw_atomic_check_acquire()
349asyw->blend.dst_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_DST_COLOR_FACTOR_MATCH_SELECT_NEG_K1; in nv50_wndw_atomic_check_acquire()
352 if (memcmp(&armw->blend, &asyw->blend, sizeof(asyw->blend))) in nv50_wndw_atomic_check_acquire()
353 asyw->set.blend = true; in nv50_wndw_atomic_check_acquire()
357 asyw->point.x = asyw->state.crtc_x; in nv50_wndw_atomic_check_acquire()
358 asyw->point.y = asyw->state.crtc_y; in nv50_wndw_atomic_check_acquire()
359 if (memcmp(&armw->point, &asyw->point, sizeof(asyw->point))) in nv50_wndw_atomic_check_acquire()
360 asyw->set.point = true; in nv50_wndw_atomic_check_acquire()
363 return wndw->func->acquire(wndw, asyw, asyh); in nv50_wndw_atomic_check_acquire()
369 struct nv50_wndw_atom *asyw, in nv50_wndw_atomic_check_lut() argument
380 if (!ilut && asyw->state.fb->format->format == DRM_FORMAT_C8) { in nv50_wndw_atomic_check_lut()
387 asyw->visible = false; in nv50_wndw_atomic_check_lut()
398 asyw->state.fb->format->format != DRM_FORMAT_XBGR16161616F && in nv50_wndw_atomic_check_lut()
399 asyw->state.fb->format->format != DRM_FORMAT_ABGR16161616F) { in nv50_wndw_atomic_check_lut()
405 memset(&asyw->xlut, 0x00, sizeof(asyw->xlut)); in nv50_wndw_atomic_check_lut()
406 if ((asyw->ilut = wndw->func->ilut ? ilut : NULL)) { in nv50_wndw_atomic_check_lut()
407 wndw->func->ilut(wndw, asyw, drm_color_lut_size(ilut)); in nv50_wndw_atomic_check_lut()
408 asyw->xlut.handle = wndw->wndw.vram.handle; in nv50_wndw_atomic_check_lut()
409 asyw->xlut.i.buffer = !asyw->xlut.i.buffer; in nv50_wndw_atomic_check_lut()
410 asyw->set.xlut = true; in nv50_wndw_atomic_check_lut()
412 asyw->clr.xlut = armw->xlut.handle != 0; in nv50_wndw_atomic_check_lut()
417 (!armw->visible || (armw->xlut.handle && !asyw->xlut.handle))) in nv50_wndw_atomic_check_lut()
418 asyw->set.xlut = true; in nv50_wndw_atomic_check_lut()
422 wndw->func->csc(wndw, asyw, ctm); in nv50_wndw_atomic_check_lut()
423 asyw->csc.valid = true; in nv50_wndw_atomic_check_lut()
424 asyw->set.csc = true; in nv50_wndw_atomic_check_lut()
426 asyw->csc.valid = false; in nv50_wndw_atomic_check_lut()
427 asyw->clr.csc = armw->csc.valid; in nv50_wndw_atomic_check_lut()
444 struct nv50_wndw_atom *asyw = nv50_wndw_atom(new_plane_state); in nv50_wndw_atomic_check() local
454 if (asyw->state.crtc) { in nv50_wndw_atomic_check()
455 asyh = nv50_head_atom_get(asyw->state.state, asyw->state.crtc); in nv50_wndw_atomic_check()
459 asyw->visible = asyh->state.active; in nv50_wndw_atomic_check()
461 asyw->visible = false; in nv50_wndw_atomic_check()
466 harm = nv50_head_atom_get(asyw->state.state, armw->state.crtc); in nv50_wndw_atomic_check()
472 if (asyw->visible && wndw->func->xlut_set && in nv50_wndw_atomic_check()
475 asyw->state.fb->format->format != in nv50_wndw_atomic_check()
477 ret = nv50_wndw_atomic_check_lut(wndw, armw, asyw, asyh); in nv50_wndw_atomic_check()
483 if (asyw->visible) { in nv50_wndw_atomic_check()
485 armw, asyw, asyh); in nv50_wndw_atomic_check()
492 nv50_wndw_atomic_check_release(wndw, asyw, harm); in nv50_wndw_atomic_check()
502 if (!asyw->visible || modeset) { in nv50_wndw_atomic_check()
503 asyw->clr.ntfy = armw->ntfy.handle != 0; in nv50_wndw_atomic_check()
504 asyw->clr.sema = armw->sema.handle != 0; in nv50_wndw_atomic_check()
505 asyw->clr.xlut = armw->xlut.handle != 0; in nv50_wndw_atomic_check()
506 if (asyw->clr.xlut && asyw->visible) in nv50_wndw_atomic_check()
507 asyw->set.xlut = asyw->xlut.handle != 0; in nv50_wndw_atomic_check()
508 asyw->clr.csc = armw->csc.valid; in nv50_wndw_atomic_check()
510 asyw->clr.image = armw->image.handle[0] != 0; in nv50_wndw_atomic_check()
536 struct nv50_wndw_atom *asyw = nv50_wndw_atom(state); in nv50_wndw_prepare_fb() local
543 if (!asyw->state.fb) in nv50_wndw_prepare_fb()
558 if (asyw->visible) in nv50_wndw_prepare_fb()
559 asyw->image.handle[0] = ctxdma->object.handle; in nv50_wndw_prepare_fb()
566 asyw->image.offset[0] = nvbo->offset; in nv50_wndw_prepare_fb()
569 asyh = nv50_head_atom_get(asyw->state.state, asyw->state.crtc); in nv50_wndw_prepare_fb()
573 wndw->func->prepare(wndw, asyh, asyw); in nv50_wndw_prepare_fb()
590 struct nv50_wndw_atom *asyw = nv50_wndw_atom(state); in nv50_wndw_atomic_destroy_state() local
591 __drm_atomic_helper_plane_destroy_state(&asyw->state); in nv50_wndw_atomic_destroy_state()
592 kfree(asyw); in nv50_wndw_atomic_destroy_state()
599 struct nv50_wndw_atom *asyw; in nv50_wndw_atomic_duplicate_state() local
600 if (!(asyw = kmalloc(sizeof(*asyw), GFP_KERNEL))) in nv50_wndw_atomic_duplicate_state()
602 __drm_atomic_helper_plane_duplicate_state(plane, &asyw->state); in nv50_wndw_atomic_duplicate_state()
603 asyw->sema = armw->sema; in nv50_wndw_atomic_duplicate_state()
604 asyw->ntfy = armw->ntfy; in nv50_wndw_atomic_duplicate_state()
605 asyw->ilut = NULL; in nv50_wndw_atomic_duplicate_state()
606 asyw->xlut = armw->xlut; in nv50_wndw_atomic_duplicate_state()
607 asyw->csc = armw->csc; in nv50_wndw_atomic_duplicate_state()
608 asyw->image = armw->image; in nv50_wndw_atomic_duplicate_state()
609 asyw->point = armw->point; in nv50_wndw_atomic_duplicate_state()
610 asyw->clr.mask = 0; in nv50_wndw_atomic_duplicate_state()
611 asyw->set.mask = 0; in nv50_wndw_atomic_duplicate_state()
612 return &asyw->state; in nv50_wndw_atomic_duplicate_state()
625 struct nv50_wndw_atom *asyw; in nv50_wndw_reset() local
627 if (WARN_ON(!(asyw = kzalloc(sizeof(*asyw), GFP_KERNEL)))) in nv50_wndw_reset()
633 __drm_atomic_helper_plane_reset(plane, &asyw->state); in nv50_wndw_reset()