Lines Matching refs:surf

191 					  struct eg_surface *surf,  in evergreen_surface_check_linear()  argument
194 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples; in evergreen_surface_check_linear()
195 surf->base_align = surf->bpe; in evergreen_surface_check_linear()
196 surf->palign = 1; in evergreen_surface_check_linear()
197 surf->halign = 1; in evergreen_surface_check_linear()
202 struct eg_surface *surf, in evergreen_surface_check_linear_aligned() argument
208 palign = MAX(64, track->group_size / surf->bpe); in evergreen_surface_check_linear_aligned()
209 surf->layer_size = surf->nbx * surf->nby * surf->bpe * surf->nsamples; in evergreen_surface_check_linear_aligned()
210 surf->base_align = track->group_size; in evergreen_surface_check_linear_aligned()
211 surf->palign = palign; in evergreen_surface_check_linear_aligned()
212 surf->halign = 1; in evergreen_surface_check_linear_aligned()
213 if (surf->nbx & (palign - 1)) { in evergreen_surface_check_linear_aligned()
216 __func__, __LINE__, prefix, surf->nbx, palign); in evergreen_surface_check_linear_aligned()
224 struct eg_surface *surf, in evergreen_surface_check_1d() argument
230 palign = track->group_size / (8 * surf->bpe * surf->nsamples); in evergreen_surface_check_1d()
232 surf->layer_size = surf->nbx * surf->nby * surf->bpe; in evergreen_surface_check_1d()
233 surf->base_align = track->group_size; in evergreen_surface_check_1d()
234 surf->palign = palign; in evergreen_surface_check_1d()
235 surf->halign = 8; in evergreen_surface_check_1d()
236 if ((surf->nbx & (palign - 1))) { in evergreen_surface_check_1d()
239 __func__, __LINE__, prefix, surf->nbx, palign, in evergreen_surface_check_1d()
240 track->group_size, surf->bpe, surf->nsamples); in evergreen_surface_check_1d()
244 if ((surf->nby & (8 - 1))) { in evergreen_surface_check_1d()
247 __func__, __LINE__, prefix, surf->nby); in evergreen_surface_check_1d()
255 struct eg_surface *surf, in evergreen_surface_check_2d() argument
262 tileb = 64 * surf->bpe * surf->nsamples; in evergreen_surface_check_2d()
264 if (tileb > surf->tsplit) { in evergreen_surface_check_2d()
265 slice_pt = tileb / surf->tsplit; in evergreen_surface_check_2d()
269 palign = (8 * surf->bankw * track->npipes) * surf->mtilea; in evergreen_surface_check_2d()
270 halign = (8 * surf->bankh * surf->nbanks) / surf->mtilea; in evergreen_surface_check_2d()
272 mtile_pr = surf->nbx / palign; in evergreen_surface_check_2d()
273 mtile_ps = (mtile_pr * surf->nby) / halign; in evergreen_surface_check_2d()
274 surf->layer_size = mtile_ps * mtileb * slice_pt; in evergreen_surface_check_2d()
275 surf->base_align = (palign / 8) * (halign / 8) * tileb; in evergreen_surface_check_2d()
276 surf->palign = palign; in evergreen_surface_check_2d()
277 surf->halign = halign; in evergreen_surface_check_2d()
279 if ((surf->nbx & (palign - 1))) { in evergreen_surface_check_2d()
282 __func__, __LINE__, prefix, surf->nbx, palign); in evergreen_surface_check_2d()
286 if ((surf->nby & (halign - 1))) { in evergreen_surface_check_2d()
289 __func__, __LINE__, prefix, surf->nby, halign); in evergreen_surface_check_2d()
298 struct eg_surface *surf, in evergreen_surface_check() argument
302 surf->bpe = r600_fmt_get_blocksize(surf->format); in evergreen_surface_check()
304 switch (surf->mode) { in evergreen_surface_check()
306 return evergreen_surface_check_linear(p, surf, prefix); in evergreen_surface_check()
308 return evergreen_surface_check_linear_aligned(p, surf, prefix); in evergreen_surface_check()
310 return evergreen_surface_check_1d(p, surf, prefix); in evergreen_surface_check()
312 return evergreen_surface_check_2d(p, surf, prefix); in evergreen_surface_check()
315 __func__, __LINE__, prefix, surf->mode); in evergreen_surface_check()
322 struct eg_surface *surf, in evergreen_surface_value_conv_check() argument
325 switch (surf->mode) { in evergreen_surface_value_conv_check()
334 __func__, __LINE__, prefix, surf->mode); in evergreen_surface_value_conv_check()
338 switch (surf->nbanks) { in evergreen_surface_value_conv_check()
339 case 0: surf->nbanks = 2; break; in evergreen_surface_value_conv_check()
340 case 1: surf->nbanks = 4; break; in evergreen_surface_value_conv_check()
341 case 2: surf->nbanks = 8; break; in evergreen_surface_value_conv_check()
342 case 3: surf->nbanks = 16; break; in evergreen_surface_value_conv_check()
345 __func__, __LINE__, prefix, surf->nbanks); in evergreen_surface_value_conv_check()
348 switch (surf->bankw) { in evergreen_surface_value_conv_check()
349 case 0: surf->bankw = 1; break; in evergreen_surface_value_conv_check()
350 case 1: surf->bankw = 2; break; in evergreen_surface_value_conv_check()
351 case 2: surf->bankw = 4; break; in evergreen_surface_value_conv_check()
352 case 3: surf->bankw = 8; break; in evergreen_surface_value_conv_check()
355 __func__, __LINE__, prefix, surf->bankw); in evergreen_surface_value_conv_check()
358 switch (surf->bankh) { in evergreen_surface_value_conv_check()
359 case 0: surf->bankh = 1; break; in evergreen_surface_value_conv_check()
360 case 1: surf->bankh = 2; break; in evergreen_surface_value_conv_check()
361 case 2: surf->bankh = 4; break; in evergreen_surface_value_conv_check()
362 case 3: surf->bankh = 8; break; in evergreen_surface_value_conv_check()
365 __func__, __LINE__, prefix, surf->bankh); in evergreen_surface_value_conv_check()
368 switch (surf->mtilea) { in evergreen_surface_value_conv_check()
369 case 0: surf->mtilea = 1; break; in evergreen_surface_value_conv_check()
370 case 1: surf->mtilea = 2; break; in evergreen_surface_value_conv_check()
371 case 2: surf->mtilea = 4; break; in evergreen_surface_value_conv_check()
372 case 3: surf->mtilea = 8; break; in evergreen_surface_value_conv_check()
375 __func__, __LINE__, prefix, surf->mtilea); in evergreen_surface_value_conv_check()
378 switch (surf->tsplit) { in evergreen_surface_value_conv_check()
379 case 0: surf->tsplit = 64; break; in evergreen_surface_value_conv_check()
380 case 1: surf->tsplit = 128; break; in evergreen_surface_value_conv_check()
381 case 2: surf->tsplit = 256; break; in evergreen_surface_value_conv_check()
382 case 3: surf->tsplit = 512; break; in evergreen_surface_value_conv_check()
383 case 4: surf->tsplit = 1024; break; in evergreen_surface_value_conv_check()
384 case 5: surf->tsplit = 2048; break; in evergreen_surface_value_conv_check()
385 case 6: surf->tsplit = 4096; break; in evergreen_surface_value_conv_check()
388 __func__, __LINE__, prefix, surf->tsplit); in evergreen_surface_value_conv_check()
397 struct eg_surface surf; in evergreen_cs_track_validate_cb() local
405 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_cb()
406 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_cb()
407 surf.mode = G_028C70_ARRAY_MODE(track->cb_color_info[id]); in evergreen_cs_track_validate_cb()
408 surf.format = G_028C70_FORMAT(track->cb_color_info[id]); in evergreen_cs_track_validate_cb()
409 surf.tsplit = G_028C74_TILE_SPLIT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
410 surf.nbanks = G_028C74_NUM_BANKS(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
411 surf.bankw = G_028C74_BANK_WIDTH(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
412 surf.bankh = G_028C74_BANK_HEIGHT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
413 surf.mtilea = G_028C74_MACRO_TILE_ASPECT(track->cb_color_attrib[id]); in evergreen_cs_track_validate_cb()
414 surf.nsamples = 1; in evergreen_cs_track_validate_cb()
416 if (!r600_fmt_is_valid_color(surf.format)) { in evergreen_cs_track_validate_cb()
418 __func__, __LINE__, surf.format, in evergreen_cs_track_validate_cb()
423 r = evergreen_surface_value_conv_check(p, &surf, "cb"); in evergreen_cs_track_validate_cb()
428 r = evergreen_surface_check(p, &surf, "cb"); in evergreen_cs_track_validate_cb()
438 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_cb()
440 __func__, __LINE__, id, offset, surf.base_align); in evergreen_cs_track_validate_cb()
444 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_cb()
450 if (!surf.mode) { in evergreen_cs_track_validate_cb()
455 if (surf.nby > 8) { in evergreen_cs_track_validate_cb()
456 min = surf.nby - 8; in evergreen_cs_track_validate_cb()
460 for (nby = surf.nby; nby > min; nby--) { in evergreen_cs_track_validate_cb()
461 size = nby * surf.nbx * surf.bpe * surf.nsamples; in evergreen_cs_track_validate_cb()
467 surf.nby = nby; in evergreen_cs_track_validate_cb()
468 slice = ((nby * surf.nbx) / 64) - 1; in evergreen_cs_track_validate_cb()
469 if (!evergreen_surface_check(p, &surf, "cb")) { in evergreen_cs_track_validate_cb()
471 tmp += surf.layer_size * mslice; in evergreen_cs_track_validate_cb()
481 __func__, __LINE__, id, surf.layer_size, in evergreen_cs_track_validate_cb()
485 __func__, __LINE__, surf.nbx, surf.nby, in evergreen_cs_track_validate_cb()
486 surf.mode, surf.bpe, surf.nsamples, in evergreen_cs_track_validate_cb()
487 surf.bankw, surf.bankh, in evergreen_cs_track_validate_cb()
488 surf.tsplit, surf.mtilea); in evergreen_cs_track_validate_cb()
564 struct eg_surface surf; in evergreen_cs_track_validate_stencil() local
572 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_stencil()
573 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_stencil()
574 surf.mode = G_028040_ARRAY_MODE(track->db_z_info); in evergreen_cs_track_validate_stencil()
575 surf.format = G_028044_FORMAT(track->db_s_info); in evergreen_cs_track_validate_stencil()
576 surf.tsplit = G_028044_TILE_SPLIT(track->db_s_info); in evergreen_cs_track_validate_stencil()
577 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info); in evergreen_cs_track_validate_stencil()
578 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info); in evergreen_cs_track_validate_stencil()
579 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info); in evergreen_cs_track_validate_stencil()
580 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info); in evergreen_cs_track_validate_stencil()
581 surf.nsamples = 1; in evergreen_cs_track_validate_stencil()
583 if (surf.format != 1) { in evergreen_cs_track_validate_stencil()
585 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_stencil()
589 surf.format = V_028C70_COLOR_8; in evergreen_cs_track_validate_stencil()
591 r = evergreen_surface_value_conv_check(p, &surf, "stencil"); in evergreen_cs_track_validate_stencil()
596 r = evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_stencil()
602 surf.format = V_028C70_COLOR_8_8_8_8; in evergreen_cs_track_validate_stencil()
603 r = evergreen_surface_check(p, &surf, "stencil"); in evergreen_cs_track_validate_stencil()
613 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_stencil()
615 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_stencil()
618 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_stencil()
622 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_stencil()
632 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_stencil()
634 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_stencil()
637 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_stencil()
641 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_stencil()
649 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby); in evergreen_cs_track_validate_stencil()
661 struct eg_surface surf; in evergreen_cs_track_validate_depth() local
669 surf.nbx = (pitch + 1) * 8; in evergreen_cs_track_validate_depth()
670 surf.nby = ((slice + 1) * 64) / surf.nbx; in evergreen_cs_track_validate_depth()
671 surf.mode = G_028040_ARRAY_MODE(track->db_z_info); in evergreen_cs_track_validate_depth()
672 surf.format = G_028040_FORMAT(track->db_z_info); in evergreen_cs_track_validate_depth()
673 surf.tsplit = G_028040_TILE_SPLIT(track->db_z_info); in evergreen_cs_track_validate_depth()
674 surf.nbanks = G_028040_NUM_BANKS(track->db_z_info); in evergreen_cs_track_validate_depth()
675 surf.bankw = G_028040_BANK_WIDTH(track->db_z_info); in evergreen_cs_track_validate_depth()
676 surf.bankh = G_028040_BANK_HEIGHT(track->db_z_info); in evergreen_cs_track_validate_depth()
677 surf.mtilea = G_028040_MACRO_TILE_ASPECT(track->db_z_info); in evergreen_cs_track_validate_depth()
678 surf.nsamples = 1; in evergreen_cs_track_validate_depth()
680 switch (surf.format) { in evergreen_cs_track_validate_depth()
682 surf.format = V_028C70_COLOR_16; in evergreen_cs_track_validate_depth()
686 surf.format = V_028C70_COLOR_8_8_8_8; in evergreen_cs_track_validate_depth()
690 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_depth()
694 r = evergreen_surface_value_conv_check(p, &surf, "depth"); in evergreen_cs_track_validate_depth()
702 r = evergreen_surface_check(p, &surf, "depth"); in evergreen_cs_track_validate_depth()
711 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_depth()
713 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_depth()
716 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_depth()
720 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_depth()
727 if (offset & (surf.base_align - 1)) { in evergreen_cs_track_validate_depth()
729 __func__, __LINE__, offset, surf.base_align); in evergreen_cs_track_validate_depth()
732 offset += surf.layer_size * mslice; in evergreen_cs_track_validate_depth()
736 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_depth()
744 r = evergreen_cs_track_validate_htile(p, surf.nbx, surf.nby); in evergreen_cs_track_validate_depth()
758 struct eg_surface surf; in evergreen_cs_track_validate_texture() local
778 surf.format = G_03001C_DATA_FORMAT(texdw[7]); in evergreen_cs_track_validate_texture()
779 surf.nbx = (G_030000_PITCH(texdw[0]) + 1) * 8; in evergreen_cs_track_validate_texture()
780 surf.nbx = r600_fmt_get_nblocksx(surf.format, surf.nbx); in evergreen_cs_track_validate_texture()
781 surf.nby = r600_fmt_get_nblocksy(surf.format, height); in evergreen_cs_track_validate_texture()
782 surf.mode = G_030004_ARRAY_MODE(texdw[1]); in evergreen_cs_track_validate_texture()
783 surf.tsplit = G_030018_TILE_SPLIT(texdw[6]); in evergreen_cs_track_validate_texture()
784 surf.nbanks = G_03001C_NUM_BANKS(texdw[7]); in evergreen_cs_track_validate_texture()
785 surf.bankw = G_03001C_BANK_WIDTH(texdw[7]); in evergreen_cs_track_validate_texture()
786 surf.bankh = G_03001C_BANK_HEIGHT(texdw[7]); in evergreen_cs_track_validate_texture()
787 surf.mtilea = G_03001C_MACRO_TILE_ASPECT(texdw[7]); in evergreen_cs_track_validate_texture()
788 surf.nsamples = 1; in evergreen_cs_track_validate_texture()
792 if (!r600_fmt_is_valid_texture(surf.format, p->family)) { in evergreen_cs_track_validate_texture()
794 __func__, __LINE__, surf.format); in evergreen_cs_track_validate_texture()
807 surf.nsamples = 1 << llevel; in evergreen_cs_track_validate_texture()
819 r = evergreen_surface_value_conv_check(p, &surf, "texture"); in evergreen_cs_track_validate_texture()
825 evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_texture()
826 surf.nby = ALIGN(surf.nby, surf.halign); in evergreen_cs_track_validate_texture()
828 r = evergreen_surface_check(p, &surf, "texture"); in evergreen_cs_track_validate_texture()
837 if (toffset & (surf.base_align - 1)) { in evergreen_cs_track_validate_texture()
839 __func__, __LINE__, toffset, surf.base_align); in evergreen_cs_track_validate_texture()
842 if (surf.nsamples <= 1 && moffset & (surf.base_align - 1)) { in evergreen_cs_track_validate_texture()
844 __func__, __LINE__, moffset, surf.base_align); in evergreen_cs_track_validate_texture()
848 toffset += surf.layer_size * depth; in evergreen_cs_track_validate_texture()
850 toffset += surf.layer_size * mslice; in evergreen_cs_track_validate_texture()
855 __func__, __LINE__, surf.layer_size, in evergreen_cs_track_validate_texture()
858 surf.nbx, surf.nby); in evergreen_cs_track_validate_texture()
879 surf.nbx = r600_fmt_get_nblocksx(surf.format, w); in evergreen_cs_track_validate_texture()
880 surf.nby = r600_fmt_get_nblocksy(surf.format, h); in evergreen_cs_track_validate_texture()
882 switch (surf.mode) { in evergreen_cs_track_validate_texture()
884 if (surf.nbx < surf.palign || surf.nby < surf.halign) { in evergreen_cs_track_validate_texture()
885 surf.mode = ARRAY_1D_TILED_THIN1; in evergreen_cs_track_validate_texture()
888 evergreen_surface_check(p, &surf, NULL); in evergreen_cs_track_validate_texture()
896 __func__, __LINE__, surf.mode); in evergreen_cs_track_validate_texture()
899 surf.nbx = ALIGN(surf.nbx, surf.palign); in evergreen_cs_track_validate_texture()
900 surf.nby = ALIGN(surf.nby, surf.halign); in evergreen_cs_track_validate_texture()
902 r = evergreen_surface_check(p, &surf, "mipmap"); in evergreen_cs_track_validate_texture()
908 moffset += surf.layer_size * d; in evergreen_cs_track_validate_texture()
910 moffset += surf.layer_size * mslice; in evergreen_cs_track_validate_texture()
916 __func__, __LINE__, i, surf.layer_size, in evergreen_cs_track_validate_texture()
921 __func__, __LINE__, surf.nbx, surf.nby, in evergreen_cs_track_validate_texture()
922 surf.mode, surf.bpe, surf.nsamples, in evergreen_cs_track_validate_texture()
923 surf.bankw, surf.bankh, in evergreen_cs_track_validate_texture()
924 surf.tsplit, surf.mtilea); in evergreen_cs_track_validate_texture()