Lines Matching refs:asyw

115 nv50_wndw_wait_armed(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw)  in nv50_wndw_wait_armed()  argument
118 if (asyw->set.ntfy) { in nv50_wndw_wait_armed()
120 asyw->ntfy.offset, in nv50_wndw_wait_armed()
128 struct nv50_wndw_atom *asyw) in nv50_wndw_flush_clr() argument
131 .mask = asyw->clr.mask & ~(flush ? 0 : asyw->set.mask), in nv50_wndw_flush_clr()
144 struct nv50_wndw_atom *asyw) in nv50_wndw_flush_set() argument
147 asyw->image.mode = NV507C_SET_PRESENT_CONTROL_BEGIN_MODE_NON_TEARING; in nv50_wndw_flush_set()
148 asyw->image.interval = 1; in nv50_wndw_flush_set()
151 if (asyw->set.sema ) wndw->func->sema_set (wndw, asyw); in nv50_wndw_flush_set()
152 if (asyw->set.ntfy ) wndw->func->ntfy_set (wndw, asyw); in nv50_wndw_flush_set()
153 if (asyw->set.image) wndw->func->image_set(wndw, asyw); in nv50_wndw_flush_set()
155 if (asyw->set.xlut ) { in nv50_wndw_flush_set()
156 if (asyw->ilut) { in nv50_wndw_flush_set()
157 asyw->xlut.i.offset = in nv50_wndw_flush_set()
158 nv50_lut_load(&wndw->ilut, asyw->xlut.i.buffer, in nv50_wndw_flush_set()
159 asyw->ilut, asyw->xlut.i.load); in nv50_wndw_flush_set()
161 wndw->func->xlut_set(wndw, asyw); in nv50_wndw_flush_set()
164 if (asyw->set.csc ) wndw->func->csc_set (wndw, asyw); in nv50_wndw_flush_set()
165 if (asyw->set.scale) wndw->func->scale_set(wndw, asyw); in nv50_wndw_flush_set()
166 if (asyw->set.blend) wndw->func->blend_set(wndw, asyw); in nv50_wndw_flush_set()
167 if (asyw->set.point) { in nv50_wndw_flush_set()
168 if (asyw->set.point = false, asyw->set.mask) in nv50_wndw_flush_set()
172 wndw->immd->point(wndw, asyw); in nv50_wndw_flush_set()
180 nv50_wndw_ntfy_enable(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw) in nv50_wndw_ntfy_enable() argument
184 asyw->ntfy.handle = wndw->wndw.sync.handle; in nv50_wndw_ntfy_enable()
185 asyw->ntfy.offset = wndw->ntfy; in nv50_wndw_ntfy_enable()
186 asyw->ntfy.awaken = false; in nv50_wndw_ntfy_enable()
187 asyw->set.ntfy = true; in nv50_wndw_ntfy_enable()
195 struct nv50_wndw_atom *asyw, in nv50_wndw_atomic_check_release() argument
200 wndw->func->release(wndw, asyw, asyh); in nv50_wndw_atomic_check_release()
201 asyw->ntfy.handle = 0; in nv50_wndw_atomic_check_release()
202 asyw->sema.handle = 0; in nv50_wndw_atomic_check_release()
203 asyw->xlut.handle = 0; in nv50_wndw_atomic_check_release()
204 memset(asyw->image.handle, 0x00, sizeof(asyw->image.handle)); in nv50_wndw_atomic_check_release()
208 nv50_wndw_atomic_check_acquire_yuv(struct nv50_wndw_atom *asyw) in nv50_wndw_atomic_check_acquire_yuv() argument
210 switch (asyw->state.fb->format->format) { in nv50_wndw_atomic_check_acquire_yuv()
212 asyw->image.format = NV507E_SURFACE_SET_PARAMS_FORMAT_VE8YO8UE8YE8; in nv50_wndw_atomic_check_acquire_yuv()
215 asyw->image.format = NV507E_SURFACE_SET_PARAMS_FORMAT_YO8VE8YE8UE8; in nv50_wndw_atomic_check_acquire_yuv()
222 asyw->image.colorspace = NV507E_SURFACE_SET_PARAMS_COLOR_SPACE_YUV_601; in nv50_wndw_atomic_check_acquire_yuv()
227 nv50_wndw_atomic_check_acquire_rgb(struct nv50_wndw_atom *asyw) in nv50_wndw_atomic_check_acquire_rgb() argument
229 switch (asyw->state.fb->format->format) { in nv50_wndw_atomic_check_acquire_rgb()
231 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_I8; in nv50_wndw_atomic_check_acquire_rgb()
235 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A8R8G8B8; in nv50_wndw_atomic_check_acquire_rgb()
238 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_R5G6B5; in nv50_wndw_atomic_check_acquire_rgb()
242 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A1R5G5B5; in nv50_wndw_atomic_check_acquire_rgb()
246 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A2B10G10R10; in nv50_wndw_atomic_check_acquire_rgb()
250 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_A8B8G8R8; in nv50_wndw_atomic_check_acquire_rgb()
254 asyw->image.format = NVC37E_SET_PARAMS_FORMAT_A2R10G10B10; in nv50_wndw_atomic_check_acquire_rgb()
258 asyw->image.format = NV507C_SURFACE_SET_PARAMS_FORMAT_RF16_GF16_BF16_AF16; in nv50_wndw_atomic_check_acquire_rgb()
264 asyw->image.colorspace = NV507E_SURFACE_SET_PARAMS_COLOR_SPACE_RGB; in nv50_wndw_atomic_check_acquire_rgb()
271 struct nv50_wndw_atom *asyw, in nv50_wndw_atomic_check_acquire() argument
274 struct drm_framebuffer *fb = asyw->state.fb; in nv50_wndw_atomic_check_acquire()
285 asyw->image.w = fb->width; in nv50_wndw_atomic_check_acquire()
286 asyw->image.h = fb->height; in nv50_wndw_atomic_check_acquire()
287 asyw->image.kind = kind; in nv50_wndw_atomic_check_acquire()
289 ret = nv50_wndw_atomic_check_acquire_rgb(asyw); in nv50_wndw_atomic_check_acquire()
291 ret = nv50_wndw_atomic_check_acquire_yuv(asyw); in nv50_wndw_atomic_check_acquire()
296 if (asyw->image.kind) { in nv50_wndw_atomic_check_acquire()
297 asyw->image.layout = NV507C_SURFACE_SET_STORAGE_MEMORY_LAYOUT_BLOCKLINEAR; in nv50_wndw_atomic_check_acquire()
299 asyw->image.blockh = tile_mode >> 4; in nv50_wndw_atomic_check_acquire()
301 asyw->image.blockh = tile_mode; in nv50_wndw_atomic_check_acquire()
302 asyw->image.blocks[0] = fb->pitches[0] / 64; in nv50_wndw_atomic_check_acquire()
303 asyw->image.pitch[0] = 0; in nv50_wndw_atomic_check_acquire()
305 asyw->image.layout = NV507C_SURFACE_SET_STORAGE_MEMORY_LAYOUT_PITCH; in nv50_wndw_atomic_check_acquire()
306 asyw->image.blockh = NV507C_SURFACE_SET_STORAGE_BLOCK_HEIGHT_ONE_GOB; in nv50_wndw_atomic_check_acquire()
307 asyw->image.blocks[0] = 0; in nv50_wndw_atomic_check_acquire()
308 asyw->image.pitch[0] = fb->pitches[0]; in nv50_wndw_atomic_check_acquire()
312 asyw->image.interval = 1; in nv50_wndw_atomic_check_acquire()
314 asyw->image.interval = 0; in nv50_wndw_atomic_check_acquire()
316 if (asyw->image.interval) in nv50_wndw_atomic_check_acquire()
317 asyw->image.mode = NV507C_SET_PRESENT_CONTROL_BEGIN_MODE_NON_TEARING; in nv50_wndw_atomic_check_acquire()
319 asyw->image.mode = NV507C_SET_PRESENT_CONTROL_BEGIN_MODE_IMMEDIATE; in nv50_wndw_atomic_check_acquire()
321 asyw->set.image = wndw->func->image_set != NULL; in nv50_wndw_atomic_check_acquire()
325 asyw->scale.sx = asyw->state.src_x >> 16; in nv50_wndw_atomic_check_acquire()
326 asyw->scale.sy = asyw->state.src_y >> 16; in nv50_wndw_atomic_check_acquire()
327 asyw->scale.sw = asyw->state.src_w >> 16; in nv50_wndw_atomic_check_acquire()
328 asyw->scale.sh = asyw->state.src_h >> 16; in nv50_wndw_atomic_check_acquire()
329 asyw->scale.dw = asyw->state.crtc_w; in nv50_wndw_atomic_check_acquire()
330 asyw->scale.dh = asyw->state.crtc_h; in nv50_wndw_atomic_check_acquire()
331 if (memcmp(&armw->scale, &asyw->scale, sizeof(asyw->scale))) in nv50_wndw_atomic_check_acquire()
332 asyw->set.scale = true; in nv50_wndw_atomic_check_acquire()
336 asyw->blend.depth = 255 - asyw->state.normalized_zpos; in nv50_wndw_atomic_check_acquire()
337 asyw->blend.k1 = asyw->state.alpha >> 8; in nv50_wndw_atomic_check_acquire()
338 switch (asyw->state.pixel_blend_mode) { in nv50_wndw_atomic_check_acquire()
340 asyw->blend.src_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_SRC_COLOR_FACTOR_MATCH_SELECT_K1; in nv50_wndw_atomic_check_acquire()
341asyw->blend.dst_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_DST_COLOR_FACTOR_MATCH_SELECT_NEG_K1_… in nv50_wndw_atomic_check_acquire()
344asyw->blend.src_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_SRC_COLOR_FACTOR_MATCH_SELECT_K1_TIME… in nv50_wndw_atomic_check_acquire()
345asyw->blend.dst_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_DST_COLOR_FACTOR_MATCH_SELECT_NEG_K1_… in nv50_wndw_atomic_check_acquire()
349 asyw->blend.src_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_SRC_COLOR_FACTOR_MATCH_SELECT_K1; in nv50_wndw_atomic_check_acquire()
350asyw->blend.dst_color = NVC37E_SET_COMPOSITION_FACTOR_SELECT_DST_COLOR_FACTOR_MATCH_SELECT_NEG_K1; in nv50_wndw_atomic_check_acquire()
353 if (memcmp(&armw->blend, &asyw->blend, sizeof(asyw->blend))) in nv50_wndw_atomic_check_acquire()
354 asyw->set.blend = true; in nv50_wndw_atomic_check_acquire()
358 asyw->point.x = asyw->state.crtc_x; in nv50_wndw_atomic_check_acquire()
359 asyw->point.y = asyw->state.crtc_y; in nv50_wndw_atomic_check_acquire()
360 if (memcmp(&armw->point, &asyw->point, sizeof(asyw->point))) in nv50_wndw_atomic_check_acquire()
361 asyw->set.point = true; in nv50_wndw_atomic_check_acquire()
364 return wndw->func->acquire(wndw, asyw, asyh); in nv50_wndw_atomic_check_acquire()
370 struct nv50_wndw_atom *asyw, in nv50_wndw_atomic_check_lut() argument
381 if (!ilut && asyw->state.fb->format->format == DRM_FORMAT_C8) { in nv50_wndw_atomic_check_lut()
388 asyw->visible = false; in nv50_wndw_atomic_check_lut()
399 asyw->state.fb->format->format != DRM_FORMAT_XBGR16161616F && in nv50_wndw_atomic_check_lut()
400 asyw->state.fb->format->format != DRM_FORMAT_ABGR16161616F) { in nv50_wndw_atomic_check_lut()
406 memset(&asyw->xlut, 0x00, sizeof(asyw->xlut)); in nv50_wndw_atomic_check_lut()
407 if ((asyw->ilut = wndw->func->ilut ? ilut : NULL)) { in nv50_wndw_atomic_check_lut()
408 wndw->func->ilut(wndw, asyw, drm_color_lut_size(ilut)); in nv50_wndw_atomic_check_lut()
409 asyw->xlut.handle = wndw->wndw.vram.handle; in nv50_wndw_atomic_check_lut()
410 asyw->xlut.i.buffer = !asyw->xlut.i.buffer; in nv50_wndw_atomic_check_lut()
411 asyw->set.xlut = true; in nv50_wndw_atomic_check_lut()
413 asyw->clr.xlut = armw->xlut.handle != 0; in nv50_wndw_atomic_check_lut()
418 (!armw->visible || (armw->xlut.handle && !asyw->xlut.handle))) in nv50_wndw_atomic_check_lut()
419 asyw->set.xlut = true; in nv50_wndw_atomic_check_lut()
423 wndw->func->csc(wndw, asyw, ctm); in nv50_wndw_atomic_check_lut()
424 asyw->csc.valid = true; in nv50_wndw_atomic_check_lut()
425 asyw->set.csc = true; in nv50_wndw_atomic_check_lut()
427 asyw->csc.valid = false; in nv50_wndw_atomic_check_lut()
428 asyw->clr.csc = armw->csc.valid; in nv50_wndw_atomic_check_lut()
445 struct nv50_wndw_atom *asyw = nv50_wndw_atom(new_plane_state); in nv50_wndw_atomic_check() local
455 if (asyw->state.crtc) { in nv50_wndw_atomic_check()
456 asyh = nv50_head_atom_get(asyw->state.state, asyw->state.crtc); in nv50_wndw_atomic_check()
460 asyw->visible = asyh->state.active; in nv50_wndw_atomic_check()
462 asyw->visible = false; in nv50_wndw_atomic_check()
467 harm = nv50_head_atom_get(asyw->state.state, armw->state.crtc); in nv50_wndw_atomic_check()
473 if (asyw->visible && wndw->func->xlut_set && in nv50_wndw_atomic_check()
476 asyw->state.fb->format->format != in nv50_wndw_atomic_check()
478 ret = nv50_wndw_atomic_check_lut(wndw, armw, asyw, asyh); in nv50_wndw_atomic_check()
484 if (asyw->visible) { in nv50_wndw_atomic_check()
486 armw, asyw, asyh); in nv50_wndw_atomic_check()
493 nv50_wndw_atomic_check_release(wndw, asyw, harm); in nv50_wndw_atomic_check()
503 if (!asyw->visible || modeset) { in nv50_wndw_atomic_check()
504 asyw->clr.ntfy = armw->ntfy.handle != 0; in nv50_wndw_atomic_check()
505 asyw->clr.sema = armw->sema.handle != 0; in nv50_wndw_atomic_check()
506 asyw->clr.xlut = armw->xlut.handle != 0; in nv50_wndw_atomic_check()
507 if (asyw->clr.xlut && asyw->visible) in nv50_wndw_atomic_check()
508 asyw->set.xlut = asyw->xlut.handle != 0; in nv50_wndw_atomic_check()
509 asyw->clr.csc = armw->csc.valid; in nv50_wndw_atomic_check()
511 asyw->clr.image = armw->image.handle[0] != 0; in nv50_wndw_atomic_check()
537 struct nv50_wndw_atom *asyw = nv50_wndw_atom(state); in nv50_wndw_prepare_fb() local
544 if (!asyw->state.fb) in nv50_wndw_prepare_fb()
559 if (asyw->visible) in nv50_wndw_prepare_fb()
560 asyw->image.handle[0] = ctxdma->object.handle; in nv50_wndw_prepare_fb()
567 asyw->image.offset[0] = nvbo->offset; in nv50_wndw_prepare_fb()
570 asyh = nv50_head_atom_get(asyw->state.state, asyw->state.crtc); in nv50_wndw_prepare_fb()
574 wndw->func->prepare(wndw, asyh, asyw); in nv50_wndw_prepare_fb()
591 struct nv50_wndw_atom *asyw = nv50_wndw_atom(state); in nv50_wndw_atomic_destroy_state() local
592 __drm_atomic_helper_plane_destroy_state(&asyw->state); in nv50_wndw_atomic_destroy_state()
593 kfree(asyw); in nv50_wndw_atomic_destroy_state()
600 struct nv50_wndw_atom *asyw; in nv50_wndw_atomic_duplicate_state() local
601 if (!(asyw = kmalloc(sizeof(*asyw), GFP_KERNEL))) in nv50_wndw_atomic_duplicate_state()
603 __drm_atomic_helper_plane_duplicate_state(plane, &asyw->state); in nv50_wndw_atomic_duplicate_state()
604 asyw->sema = armw->sema; in nv50_wndw_atomic_duplicate_state()
605 asyw->ntfy = armw->ntfy; in nv50_wndw_atomic_duplicate_state()
606 asyw->ilut = NULL; in nv50_wndw_atomic_duplicate_state()
607 asyw->xlut = armw->xlut; in nv50_wndw_atomic_duplicate_state()
608 asyw->csc = armw->csc; in nv50_wndw_atomic_duplicate_state()
609 asyw->image = armw->image; in nv50_wndw_atomic_duplicate_state()
610 asyw->point = armw->point; in nv50_wndw_atomic_duplicate_state()
611 asyw->clr.mask = 0; in nv50_wndw_atomic_duplicate_state()
612 asyw->set.mask = 0; in nv50_wndw_atomic_duplicate_state()
613 return &asyw->state; in nv50_wndw_atomic_duplicate_state()
626 struct nv50_wndw_atom *asyw; in nv50_wndw_reset() local
628 if (WARN_ON(!(asyw = kzalloc(sizeof(*asyw), GFP_KERNEL)))) in nv50_wndw_reset()
634 __drm_atomic_helper_plane_reset(plane, &asyw->state); in nv50_wndw_reset()