Lines Matching refs:info

159                             const struct isl_surf_fill_state_info *restrict info)
163 s.SurfaceType = get_surftype(info->surf->dim, info->view->usage);
165 if (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT)
166 assert(isl_format_supports_rendering(dev->info, info->view->format));
167 else if (info->view->usage & ISL_SURF_USAGE_TEXTURE_BIT)
168 assert(isl_format_supports_sampling(dev->info, info->view->format));
175 if (info->surf->dim == ISL_SURF_DIM_1D)
176 assert(!isl_format_is_compressed(info->view->format));
178 if (isl_format_is_compressed(info->surf->format)) {
188 isl_format_get_layout(info->surf->format);
190 isl_format_get_layout(info->surf->format);
196 s.SurfaceFormat = info->view->format;
227 s.DepthStencilResource = info->aux_usage == ISL_AUX_USAGE_HIZ_CCS_WT ||
228 info->aux_usage == ISL_AUX_USAGE_STC_CCS;
232 s.ColorBufferComponentWriteDisables = info->write_disables;
233 s.ColorBlendEnable = info->blend_enable;
235 assert(info->write_disables == 0);
243 assert(info->surf->logical_level0_px.width > 0 &&
244 info->surf->logical_level0_px.height > 0);
246 s.Width = info->surf->logical_level0_px.width - 1;
247 s.Height = info->surf->logical_level0_px.height - 1;
261 if (GFX_VER == 6 && (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT) &&
262 info->surf->samples > 1 &&
263 (info->surf->logical_level0_px.height % 4) == 1)
278 (info->view->usage & ISL_SURF_USAGE_TEXTURE_BIT) &&
279 info->surf->samples > 1)
280 assert(info->view->base_array_layer == 0);
282 s.MinimumArrayElement = info->view->base_array_layer;
293 s.Depth = info->view->array_len - 1;
300 if (info->view->usage & (ISL_SURF_USAGE_RENDER_TARGET_BIT |
305 s.MinimumArrayElement = info->view->base_array_layer;
307 s.Depth = info->view->array_len / 6 - 1;
308 if (info->view->usage & (ISL_SURF_USAGE_RENDER_TARGET_BIT |
318 s.Depth = info->surf->logical_level0_px.depth - 1;
338 s.MinimumArrayElement = info->view->base_array_layer;
339 s.RenderTargetViewExtent = info->view->array_len - 1;
347 s.SurfaceArray = info->surf->dim != ISL_SURF_DIM_3D &&
348 info->view->array_len > 1;
350 s.SurfaceArray = info->surf->dim != ISL_SURF_DIM_3D;
353 if (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT) {
360 s.MIPCountLOD = info->view->base_level;
367 s.SurfaceMinLOD = info->view->base_level;
368 s.MIPCountLOD = MAX(info->view->levels, 1) - 1;
381 isl_get_image_alignment(info->surf);
388 if (info->surf->dim_layout == ISL_DIM_LAYOUT_GFX9_1D) {
392 s.SurfacePitch = info->surf->row_pitch_B - 1;
396 s.SurfaceQPitch = isl_get_qpitch(info->surf) >> 2;
398 s.SurfaceArraySpacing = info->surf->array_pitch_span ==
403 assert(GFX_VER < 12 || info->surf->tiling != ISL_TILING_W);
409 if (isl_format_get_layout(info->view->format)->txc == ISL_TXC_ASTC)
410 assert(info->surf->tiling == ISL_TILING_Y0);
412 s.TileMode = isl_encode_tiling[info->surf->tiling];
414 s.TiledSurface = info->surf->tiling != ISL_TILING_LINEAR,
415 s.TileWalk = info->surf->tiling == ISL_TILING_Y0 ? TILEWALK_YMAJOR :
431 !isl_format_has_int_channel(info->view->format);
450 if (info->surf->samples > 1) {
451 assert(info->view->min_lod_clamp == 0);
452 assert(info->view->base_level == 0);
453 assert(info->view->levels == 1);
455 s.NumberofMultisamples = ffs(info->surf->samples) - 1;
458 isl_encode_multisample_layout[info->surf->msaa_layout];
463 s.ResourceMinLOD = info->view->min_lod_clamp;
465 assert(info->view->min_lod_clamp == 0);
469 if (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT)
470 assert(isl_swizzle_supports_rendering(dev->info, info->view->swizzle));
472 s.ShaderChannelSelectRed = (enum GENX(ShaderChannelSelect)) info->view->swizzle.r;
473 s.ShaderChannelSelectGreen = (enum GENX(ShaderChannelSelect)) info->view->swizzle.g;
474 s.ShaderChannelSelectBlue = (enum GENX(ShaderChannelSelect)) info->view->swizzle.b;
475 s.ShaderChannelSelectAlpha = (enum GENX(ShaderChannelSelect)) info->view->swizzle.a;
477 assert(isl_swizzle_is_identity(info->view->swizzle));
480 s.SurfaceBaseAddress = info->address;
483 s.MOCS = info->mocs;
487 if (info->x_offset_sa != 0 || info->y_offset_sa != 0) {
492 assert(info->surf->tiling != ISL_TILING_LINEAR);
493 assert(info->surf->dim == ISL_SURF_DIM_2D);
494 assert(isl_is_pow2(isl_format_get_layout(info->view->format)->bpb));
495 assert(info->surf->levels == 1);
496 assert(info->surf->logical_level0_px.array_len == 1);
497 assert(info->aux_usage == ISL_AUX_USAGE_NONE);
501 assert(info->surf->samples == 1);
502 if (isl_format_get_layout(info->view->format)->bpb == 8)
503 assert(info->x_offset_sa % 16 == 0);
504 if (isl_format_get_layout(info->view->format)->bpb == 16)
505 assert(info->x_offset_sa % 8 == 0);
515 assert(info->x_offset_sa % x_div == 0);
516 assert(info->y_offset_sa % y_div == 0);
517 s.XOffset = info->x_offset_sa / x_div;
518 s.YOffset = info->y_offset_sa / y_div;
520 assert(info->x_offset_sa == 0);
521 assert(info->y_offset_sa == 0);
525 if (info->aux_usage != ISL_AUX_USAGE_NONE) {
528 assert(info->aux_usage == ISL_AUX_USAGE_MCS ||
529 info->aux_usage == ISL_AUX_USAGE_CCS_E ||
530 info->aux_usage == ISL_AUX_USAGE_GFX12_CCS_E ||
531 info->aux_usage == ISL_AUX_USAGE_MC ||
532 info->aux_usage == ISL_AUX_USAGE_HIZ_CCS_WT ||
533 info->aux_usage == ISL_AUX_USAGE_MCS_CCS ||
534 info->aux_usage == ISL_AUX_USAGE_STC_CCS);
536 assert(info->aux_usage == ISL_AUX_USAGE_HIZ ||
537 info->aux_usage == ISL_AUX_USAGE_MCS ||
538 info->aux_usage == ISL_AUX_USAGE_CCS_D ||
539 info->aux_usage == ISL_AUX_USAGE_CCS_E);
541 assert(info->aux_usage == ISL_AUX_USAGE_HIZ ||
542 info->aux_usage == ISL_AUX_USAGE_MCS ||
543 info->aux_usage == ISL_AUX_USAGE_CCS_D);
545 assert(info->aux_usage == ISL_AUX_USAGE_MCS ||
546 info->aux_usage == ISL_AUX_USAGE_CCS_D);
556 assert(!(info->view->usage & ISL_SURF_USAGE_STORAGE_BIT));
558 if (isl_surf_usage_is_depth(info->surf->usage))
559 assert(isl_aux_usage_has_hiz(info->aux_usage));
561 if (isl_surf_usage_is_stencil(info->surf->usage))
562 assert(info->aux_usage == ISL_AUX_USAGE_STC_CCS);
564 if (isl_aux_usage_has_hiz(info->aux_usage)) {
587 assert(info->surf->samples == 1);
590 assert(info->surf->dim != ISL_SURF_DIM_3D);
593 switch (info->view->format) {
605 if (info->aux_usage == ISL_AUX_USAGE_MC) {
607 get_media_compression_format(info->mc_format, info->surf->format);
610 isl_get_render_compression_format(info->surf->format);
614 s.MemoryCompressionEnable = info->aux_usage == ISL_AUX_USAGE_MC;
626 if (info->aux_usage == ISL_AUX_USAGE_CCS_E ||
627 info->aux_usage == ISL_AUX_USAGE_GFX12_CCS_E)
628 assert(isl_format_supports_ccs_e(dev->info, info->view->format));
643 if (info->aux_usage == ISL_AUX_USAGE_CCS_D) {
644 if (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT) {
645 assert(isl_format_supports_ccs_d(dev->info, info->view->format));
647 assert(info->view->usage & ISL_SURF_USAGE_TEXTURE_BIT);
648 assert(isl_format_supports_ccs_e(dev->info, info->view->format));
653 s.AuxiliarySurfaceMode = isl_encode_aux_mode[info->aux_usage];
659 /* The auxiliary buffer info is filled when it's usable by the HW.
669 if ((GFX_VER < 12 && info->aux_usage != ISL_AUX_USAGE_NONE) ||
670 (GFX_VER >= 12 && isl_aux_usage_has_mcs(info->aux_usage))) {
672 assert(info->aux_surf != NULL);
675 isl_surf_get_tile_info(info->aux_surf, &tile_info);
677 info->aux_surf->row_pitch_B / tile_info.phys_extent_B.width;
679 s.AuxiliarySurfaceBaseAddress = info->aux_address;
688 isl_surf_get_array_pitch_sa_rows(info->aux_surf) >> 2;
700 if (GFX_VER >= 9 || dev->info->platform == INTEL_PLATFORM_CHV) {
701 switch (info->view->format) {
717 if (GFX_VER >= 9 && info->aux_usage == ISL_AUX_USAGE_HIZ)
724 if (isl_aux_usage_has_fast_clears(info->aux_usage)) {
725 if (info->use_clear_address) {
728 s.ClearValueAddress = info->clear_address;
749 if (info->use_clear_address) {
755 assert(info->use_clear_address);
757 if (!info->use_clear_address) {
758 s.RedClearColor = info->clear_color.u32[0];
759 s.GreenClearColor = info->clear_color.u32[1];
760 s.BlueClearColor = info->clear_color.u32[2];
761 s.AlphaClearColor = info->clear_color.u32[3];
767 if (isl_format_has_int_channel(info->view->format)) {
769 assert(info->clear_color.u32[i] == 0 ||
770 info->clear_color.u32[i] == 1);
772 s.RedClearColor = info->clear_color.u32[0] != 0;
773 s.GreenClearColor = info->clear_color.u32[1] != 0;
774 s.BlueClearColor = info->clear_color.u32[2] != 0;
775 s.AlphaClearColor = info->clear_color.u32[3] != 0;
778 assert(info->clear_color.f32[i] == 0.0f ||
779 info->clear_color.f32[i] == 1.0f);
781 s.RedClearColor = info->clear_color.f32[0] != 0.0f;
782 s.GreenClearColor = info->clear_color.f32[1] != 0.0f;
783 s.BlueClearColor = info->clear_color.f32[2] != 0.0f;
784 s.AlphaClearColor = info->clear_color.f32[3] != 0.0f;
794 const struct isl_buffer_fill_state_info *restrict info)
796 uint64_t buffer_size = info->size_B;
809 if ((info->format == ISL_FORMAT_RAW ||
810 info->stride_B < isl_format_get_layout(info->format)->bpb / 8) &&
811 !info->is_scratch) {
812 assert(info->stride_B == 1);
817 uint32_t num_elements = buffer_size / info->stride_B;
820 if (info->format == ISL_FORMAT_RAW) {
833 s.SurfaceFormat = info->format;
837 if (info->is_scratch) {
844 assert(info->format == ISL_FORMAT_RAW);
845 assert(info->stride_B % 64 == 0);
846 assert(info->stride_B <= 256 * 1024);
850 assert(!info->is_scratch);
853 s.SurfacePitch = info->stride_B - 1;
875 if (GFX_VER == 12 && dev->info->revision == 0) {
884 if (info->format != ISL_FORMAT_RAW &&
885 info->stride_B == isl_format_get_layout(info->format)->bpb / 8 &&
910 s.SurfaceBaseAddress = info->address;
912 s.MOCS = info->mocs;
916 s.ShaderChannelSelectRed = (enum GENX(ShaderChannelSelect)) info->swizzle.r;
917 s.ShaderChannelSelectGreen = (enum GENX(ShaderChannelSelect)) info->swizzle.g;
918 s.ShaderChannelSelectBlue = (enum GENX(ShaderChannelSelect)) info->swizzle.b;
919 s.ShaderChannelSelectAlpha = (enum GENX(ShaderChannelSelect)) info->swizzle.a;
927 const struct isl_null_fill_state_info *restrict info)
938 .SurfaceArray = info->size.depth > 1,
964 .MIPCountLOD = info->levels,
965 .Width = info->size.width - 1,
966 .Height = info->size.height - 1,
967 .Depth = info->size.depth - 1,
968 .RenderTargetViewExtent = info->size.depth - 1,
970 .MinimumArrayElement = info->minimum_array_element,