Lines Matching refs:aux
431 iris_bo_unreference(res->aux.bo);
432 iris_bo_unreference(res->aux.clear_color_bo);
433 free(res->aux.state);
435 res->aux.usage = ISL_AUX_USAGE_NONE;
436 res->aux.surf.size_B = 0;
437 res->aux.bo = NULL;
438 res->aux.extra_aux.surf.size_B = 0;
439 res->aux.clear_color_bo = NULL;
440 res->aux.state = NULL;
536 assert(res->aux.state == NULL);
573 if (!isl_aux_usage_has_fast_clears(res->aux.usage))
597 if (isl_aux_usage_has_ccs(res->aux.usage)) {
598 const unsigned aux_offset = res->aux.extra_aux.surf.size_B > 0 ?
599 res->aux.extra_aux.offset : res->aux.offset;
605 res->aux.bo->address + aux_offset,
607 res->bo->aux_map_address = res->aux.bo->address;
776 * Configure aux for the resource, but don't allocate it. For images which
777 * might be shared with modifiers, we must allocate the image and aux data in
790 isl_surf_get_mcs_surf(&screen->isl_dev, &res->surf, &res->aux.surf);
793 isl_surf_get_hiz_surf(&screen->isl_dev, &res->surf, &res->aux.surf);
797 &res->aux.surf, &res->aux.extra_aux.surf);
803 res->aux.usage = ISL_AUX_USAGE_MCS_CCS;
805 res->aux.usage = ISL_AUX_USAGE_MCS;
811 res->aux.usage = ISL_AUX_USAGE_HIZ;
818 res->aux.usage = ISL_AUX_USAGE_HIZ_CCS_WT;
820 res->aux.usage = ISL_AUX_USAGE_HIZ_CCS;
824 res->aux.usage = res->mod_info->aux_usage;
826 res->aux.usage = ISL_AUX_USAGE_STC_CCS;
828 res->aux.usage = devinfo->ver < 12 ?
832 res->aux.usage = ISL_AUX_USAGE_CCS_D;
837 switch (res->aux.usage) {
839 /* Having no aux buffer is only okay if there's no modifier with aux. */
865 assert(res->aux.usage != ISL_AUX_USAGE_STC_CCS);
869 assert(res->aux.surf.size_B == 0);
876 * we choose an aux state which describes the current state and helps
879 assert(isl_aux_usage_has_compression(res->aux.usage));
880 initial_state = isl_aux_usage_has_fast_clears(res->aux.usage) ?
884 assert(res->aux.surf.size_B > 0);
899 unreachable("Unsupported aux mode");
903 res->aux.state = create_aux_state_map(res, initial_state);
904 if (!res->aux.state)
911 * Initialize the aux buffer contents.
922 res->aux.surf.size_B > 0) {
929 uint8_t memset_value = isl_aux_usage_has_mcs(res->aux.usage) ? 0xFF : 0;
930 memset((char*)map + res->aux.offset, memset_value,
931 res->aux.surf.size_B);
934 if (res->aux.extra_aux.surf.size_B > 0) {
940 memset((char*)map + res->aux.extra_aux.offset,
941 0, res->aux.extra_aux.surf.size_B);
953 memset((char *)map + res->aux.clear_color_offset, 0, clear_color_size);
955 res->aux.clear_color_unknown = true;
962 if (res->aux.surf.size_B > 0) {
963 res->aux.bo = res->bo;
964 iris_bo_reference(res->aux.bo);
969 res->aux.clear_color_bo = res->bo;
970 iris_bo_reference(res->aux.clear_color_bo);
980 assert(aux_res->aux.surf.row_pitch_B && aux_res->aux.offset);
981 assert(res->bo == aux_res->aux.bo);
982 assert(res->aux.surf.row_pitch_B == aux_res->aux.surf.row_pitch_B);
983 assert(res->bo->size >= aux_res->aux.offset + res->aux.surf.size_B);
985 iris_bo_reference(aux_res->aux.bo);
986 res->aux.bo = aux_res->aux.bo;
987 res->aux.offset = aux_res->aux.offset;
996 /* Create an array of resources. Combining main and aux planes is easier
1007 /* Combine main and aux plane information. */
1022 res->aux.clear_color_bo =
1031 res->aux.clear_color_bo =
1042 iris_bo_reference(r[2]->aux.clear_color_bo);
1043 r[0]->aux.clear_color_bo = r[2]->aux.clear_color_bo;
1044 r[0]->aux.clear_color_offset = r[2]->aux.clear_color_offset;
1045 r[0]->aux.clear_color_unknown = true;
1052 iris_bo_reference(r[1]->aux.clear_color_bo);
1053 r[0]->aux.clear_color_bo = r[1]->aux.clear_color_bo;
1054 r[0]->aux.clear_color_offset = r[1]->aux.clear_color_offset;
1055 r[0]->aux.clear_color_unknown = true;
1127 unsigned flags = iris_resource_alloc_flags(screen, templ, res->aux.usage);
1177 unsigned flags = iris_resource_alloc_flags(screen, templ, res->aux.usage);
1185 /* Modifiers require the aux data to be in the same buffer as the main
1190 /* Allocate space for the aux buffer. */
1191 if (res->aux.surf.size_B > 0) {
1192 res->aux.offset = ALIGN(bo_size, res->aux.surf.alignment_B);
1193 bo_size = res->aux.offset + res->aux.surf.size_B;
1196 /* Allocate space for the extra aux buffer. */
1197 if (res->aux.extra_aux.surf.size_B > 0) {
1198 res->aux.extra_aux.offset =
1199 ALIGN(bo_size, res->aux.extra_aux.surf.alignment_B);
1200 bo_size = res->aux.extra_aux.offset + res->aux.extra_aux.surf.size_B;
1210 res->aux.clear_color_offset = ALIGN(bo_size, 4096);
1211 bo_size = res->aux.clear_color_offset +
1222 if (res->aux.usage != ISL_AUX_USAGE_NONE &&
1405 * aux image. iris_resource_finish_aux_import will merge the separate aux
1409 res->aux.clear_color_offset = whandle->offset;
1410 res->aux.clear_color_bo = res->bo;
1417 res->aux.surf.row_pitch_B = whandle->stride;
1418 res->aux.offset = whandle->offset;
1419 res->aux.bo = res->bo;
1491 /* Stencil offset in the buffer without aux. */
1522 if (!res->mod_info && res->aux.usage != ISL_AUX_USAGE_NONE) {
1555 assert(old_res->bo == old_res->aux.bo || old_res->aux.bo == NULL);
1556 assert(old_res->bo == old_res->aux.clear_color_bo ||
1557 old_res->aux.clear_color_bo == NULL);
1594 struct iris_bo *old_aux_bo = old_res->aux.bo;
1595 struct iris_bo *old_clear_color_bo = old_res->aux.clear_color_bo;
1600 old_res->aux.surf = new_res->aux.surf;
1601 old_res->aux.bo = new_res->aux.bo;
1602 old_res->aux.offset = new_res->aux.offset;
1603 old_res->aux.extra_aux.surf = new_res->aux.extra_aux.surf;
1604 old_res->aux.extra_aux.offset = new_res->aux.extra_aux.offset;
1605 old_res->aux.clear_color_bo = new_res->aux.clear_color_bo;
1606 old_res->aux.clear_color_offset = new_res->aux.clear_color_offset;
1607 old_res->aux.usage = new_res->aux.usage;
1609 if (new_res->aux.state) {
1610 assert(old_res->aux.state);
1614 enum isl_aux_state aux =
1616 iris_resource_set_aux_state(ice, old_res, l, z, 1, aux);
1625 new_res->aux.bo = old_aux_bo;
1626 new_res->aux.clear_color_bo = old_clear_color_bo;
1676 /* Disable aux usage if explicit flush not set and this is the first time
1678 * a modifier with aux.
1681 (!(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH) && res->aux.usage != 0) &&
1711 struct iris_bo *bo = wants_cc ? res->aux.clear_color_bo :
1712 wants_aux ? res->aux.bo : res->bo;
1728 wants_aux ? res->aux.surf.row_pitch_B : res->surf.row_pitch_B;
1742 *value = wants_cc ? res->aux.clear_color_offset :
1743 wants_aux ? res->aux.offset : 0;
1806 bo = res->aux.clear_color_bo;
1807 whandle->offset = res->aux.clear_color_offset;
1809 bo = res->aux.bo;
1810 whandle->stride = res->aux.surf.row_pitch_B;
1811 whandle->offset = res->aux.offset;
1825 usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH ? res->aux.usage :
1828 if (res->aux.usage != allowed_usage) {
2440 !isl_aux_usage_has_compression(res->aux.usage) &&
2570 isl_aux_usage_has_compression(res->aux.usage) ||
2667 if (res->aux.clear_color_unknown ||
2668 memcmp(&res->aux.clear_color, &color, sizeof(color)) != 0) {
2669 res->aux.clear_color = color;
2670 res->aux.clear_color_unknown = false;