| /xsrc/external/mit/MesaLib/dist/src/vulkan/util/ |
| H A D | vk_format.h | 50 const VkImageAspectFlags aspects = vk_format_aspects(format); local in function:vk_format_is_depth_or_stencil 51 return aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT); 57 const VkImageAspectFlags aspects = vk_format_aspects(format); local in function:vk_format_has_depth 58 return aspects & VK_IMAGE_ASPECT_DEPTH_BIT; 64 const VkImageAspectFlags aspects = vk_format_aspects(format); local in function:vk_format_has_stencil 65 return aspects & VK_IMAGE_ASPECT_STENCIL_BIT;
|
| H A D | vk_image.c | 86 if (image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { 179 image->aspects = vk_format_aspects(format); 186 assert(!(aspect_mask & ~image->aspects)); 202 * - If both aspects are included in aspectMask, the implicit usage 225 * If the image has color plane aspects VK_IMAGE_ASPECT_COLOR_BIT has been 226 * requested, this returns the aspects of the underlying image. 245 assert(image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_MASK_MESA); 246 return image->aspects; 248 assert(aspect_mask && !(aspect_mask & ~image->aspects)); 310 image_view->aspects [all...] |
| H A D | vk_image.h | 48 VkImageAspectFlags aspects; member in struct:vk_image 135 /** Image view format, relative to the selected aspects 139 * - If vk_image_view::aspects contains both depth and stencil, this will 184 * aspects will be the full set of plane aspects in the image. 189 * plane of the multi-planar format. In this case, aspects will be 193 * vk_image_view::aspects is always a subset of vk_image::aspects. 195 VkImageAspectFlags aspects; member in struct:vk_image_view
|
| /xsrc/external/mit/MesaLib.old/dist/src/intel/vulkan/ |
| H A D | vk_format_info.h | 151 const VkImageAspectFlags aspects = vk_format_aspects(format); local in function:vk_format_is_depth_or_stencil 152 return aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT); 158 const VkImageAspectFlags aspects = vk_format_aspects(format); local in function:vk_format_has_depth 159 return aspects & VK_IMAGE_ASPECT_DEPTH_BIT;
|
| H A D | anv_image.c | 131 uint32_t plane = anv_image_aspect_to_plane(image->aspects, aspect); 251 image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV); 315 const unsigned plane = anv_image_aspect_to_plane(image->aspects, aspect); 585 image->aspects = vk_format_aspects(image->vk_format); 623 for_each_bit(b, image->aspects) { 840 image->aspects = vk_format_aspects(image->vk_format); 848 for_each_bit(b, image->aspects) { 870 anv_foreach_image_aspect_bit(aspect_bit, image, image->aspects) { 872 anv_image_aspect_to_plane(image->aspects, 1UL << aspect_bit); 891 /* Resolve will alter the image's aspects, d 895 VkImageAspectFlags aspects = image->aspects; local in function:anv_BindImageMemory2 [all...] |
| H A D | anv_blorp.c | 203 uint32_t plane = anv_image_aspect_to_plane(image->aspects, aspect); 914 if (image->aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { 922 if (image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { 1312 uint32_t plane = anv_image_aspect_to_plane(image->aspects, aspect); 1328 assert(image->aspects == VK_IMAGE_ASPECT_COLOR_BIT && image->n_planes == 1); 1381 assert(image->aspects == VK_IMAGE_ASPECT_COLOR_BIT); 1409 VkImageAspectFlags aspects, 1416 assert(image->aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | 1423 if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { 1432 if (aspects 1407 anv_image_clear_depth_stencil(struct anv_cmd_buffer * cmd_buffer,const struct anv_image * image,VkImageAspectFlags aspects,enum isl_aux_usage depth_aux_usage,uint32_t level,uint32_t base_layer,uint32_t layer_count,VkRect2D area,float depth_value,uint8_t stencil_value) argument 1480 anv_image_hiz_clear(struct anv_cmd_buffer * cmd_buffer,const struct anv_image * image,VkImageAspectFlags aspects,uint32_t level,uint32_t base_layer,uint32_t layer_count,VkRect2D area,uint8_t stencil_value) argument [all...] |
| H A D | anv_private.h | 2895 /* Purposefully assert with depth/stencil aspects. */ 2915 #define anv_foreach_image_aspect_bit(b, image, aspects) \ 2916 for_each_bit(b, anv_image_expand_aspects(image, aspects)) 2979 VkImageAspectFlags aspects; member in struct:anv_image 3024 * anv_image::aspects has a x aspect. Refer to anv_image_aspect_to_plane() 3119 uint32_t plane = anv_image_aspect_to_plane(image->aspects, aspect); 3141 uint32_t plane = anv_image_aspect_to_plane(image->aspects, aspect); 3152 assert(image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV); 3154 uint32_t plane = anv_image_aspect_to_plane(image->aspects, aspect); 3181 UNUSED uint32_t plane = anv_image_aspect_to_plane(image->aspects, aspec 3323 anv_image_expand_aspects(const struct anv_image * image,VkImageAspectFlags aspects) argument [all...] |
| H A D | anv_dump.c | 425 for_each_bit(b, iview->image->aspects) { 442 unsigned plane = anv_image_aspect_to_plane(iview->image->aspects, aspect);
|
| H A D | gen8_cmd_buffer.c | 349 (ds_iview->image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT) && 357 (ds_iview->image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT) &&
|
| /xsrc/external/mit/MesaLib/dist/src/amd/vulkan/ |
| H A D | radv_meta_clear.c | 583 create_depthstencil_pipeline(struct radv_device *device, VkImageAspectFlags aspects, argument 606 .depthTestEnable = !!(aspects & VK_IMAGE_ASPECT_DEPTH_BIT), 608 .depthWriteEnable = !!(aspects & VK_IMAGE_ASPECT_DEPTH_BIT), 610 .stencilTestEnable = !!(aspects & VK_IMAGE_ASPECT_STENCIL_BIT), 632 if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { 635 if (aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { 649 VkImageAspectFlags aspects, VkImageLayout layout, bool in_render_loop, 662 (((aspects & VK_IMAGE_ASPECT_DEPTH_BIT) && clear_value.depth != 0.0 && 664 ((aspects & VK_IMAGE_ASPECT_STENCIL_BIT) && clear_value.stencil != 0))) 678 VkImageAspectFlags aspects, VkImageLayou 648 depth_view_can_fast_clear(struct radv_cmd_buffer * cmd_buffer,const struct radv_image_view * iview,VkImageAspectFlags aspects,VkImageLayout layout,bool in_render_loop,const VkClearRect * clear_rect,VkClearDepthStencilValue clear_value) argument 676 pick_depthstencil_pipeline(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_state * meta_state,const struct radv_image_view * iview,int samples_log2,VkImageAspectFlags aspects,VkImageLayout layout,bool in_render_loop,const VkClearRect * clear_rect,VkClearDepthStencilValue clear_value) argument 739 VkImageAspectFlags aspects = clear_att->aspectMask; local in function:emit_depthstencil_clear 924 radv_get_htile_mask(const struct radv_device * device,const struct radv_image * image,VkImageAspectFlags aspects) argument 955 radv_can_fast_clear_depth(struct radv_cmd_buffer * cmd_buffer,const struct radv_image_view * iview,VkImageLayout image_layout,bool in_render_loop,VkImageAspectFlags aspects,const VkClearRect * clear_rect,const VkClearDepthStencilValue clear_value,uint32_t view_mask) argument 1010 VkImageAspectFlags aspects = clear_att->aspectMask; local in function:radv_fast_clear_depth 1930 VkImageAspectFlags aspects = clear_att->aspectMask; local in function:emit_clear [all...] |
| H A D | radv_meta_resolve_cs.c | 579 VkImageAspectFlags aspects, VkResolveModeFlagBits resolve_mode) 616 if (aspects == VK_IMAGE_ASPECT_DEPTH_BIT) 622 assert(aspects == VK_IMAGE_ASPECT_DEPTH_BIT); 626 if (aspects == VK_IMAGE_ASPECT_DEPTH_BIT) 632 if (aspects == VK_IMAGE_ASPECT_DEPTH_BIT) 642 int index = aspects == VK_IMAGE_ASPECT_DEPTH_BIT ? DEPTH_RESOLVE : STENCIL_RESOLVE; 843 VkImageAspectFlags aspects, 868 region.srcSubresource.aspectMask = aspects; 891 .aspectMask = aspects, 909 .aspectMask = aspects, 577 emit_depth_stencil_resolve(struct radv_cmd_buffer * cmd_buffer,struct radv_image_view * src_iview,struct radv_image_view * dest_iview,const VkExtent3D * resolve_extent,VkImageAspectFlags aspects,VkResolveModeFlagBits resolve_mode) argument 842 radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer * cmd_buffer,VkImageAspectFlags aspects,VkResolveModeFlagBits resolve_mode) argument [all...] |
| H A D | radv_meta_resolve_fs.c | 846 VkImageAspectFlags aspects, VkResolveModeFlagBits resolve_mode) 875 if (aspects == VK_IMAGE_ASPECT_DEPTH_BIT) 881 assert(aspects == VK_IMAGE_ASPECT_DEPTH_BIT); 885 if (aspects == VK_IMAGE_ASPECT_DEPTH_BIT) 891 if (aspects == VK_IMAGE_ASPECT_DEPTH_BIT) 901 int index = aspects == VK_IMAGE_ASPECT_DEPTH_BIT ? DEPTH_RESOLVE : STENCIL_RESOLVE; 1121 VkImageAspectFlags aspects, 1142 region.srcSubresource.aspectMask = aspects; 1172 .aspectMask = aspects, 1182 &(VkExtent2D){fb->width, fb->height}, aspects, resolve_mod 844 emit_depth_stencil_resolve(struct radv_cmd_buffer * cmd_buffer,struct radv_image_view * src_iview,struct radv_image_view * dst_iview,const VkExtent2D * resolve_extent,VkImageAspectFlags aspects,VkResolveModeFlagBits resolve_mode) argument 1120 radv_depth_stencil_resolve_subpass_fs(struct radv_cmd_buffer * cmd_buffer,VkImageAspectFlags aspects,VkResolveModeFlagBits resolve_mode) argument [all...] |
| H A D | radv_meta_blit2d.c | 52 struct radv_image_view *iview, VkFormat depth_format, VkImageAspectFlagBits aspects) 70 .subresourceRange = {.aspectMask = aspects, 108 enum blit2d_src_type src_type, VkFormat depth_format, VkImageAspectFlagBits aspects, 132 create_iview(cmd_buffer, src_img, &tmp->iview, depth_format, aspects); 167 struct blit2d_dst_temps *tmp, VkImageAspectFlagBits aspects) 169 create_iview(cmd_buffer, dst, &tmp->iview, depth_format, aspects); 373 unreachable("Processing blit2d with multiple aspects."); 51 create_iview(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_blit2d_surf * surf,struct radv_image_view * iview,VkFormat depth_format,VkImageAspectFlagBits aspects) argument 106 blit2d_bind_src(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_blit2d_surf * src_img,struct radv_meta_blit2d_buffer * src_buf,struct blit2d_src_temps * tmp,enum blit2d_src_type src_type,VkFormat depth_format,VkImageAspectFlagBits aspects,uint32_t log2_samples) argument 165 blit2d_bind_dst(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_blit2d_surf * dst,uint32_t width,uint32_t height,VkFormat depth_format,struct blit2d_dst_temps * tmp,VkImageAspectFlagBits aspects) argument
|
| /xsrc/external/mit/MesaLib.old/dist/src/amd/vulkan/ |
| H A D | radv_meta_clear.c | 561 VkImageAspectFlags aspects, 586 .depthTestEnable = (aspects & VK_IMAGE_ASPECT_DEPTH_BIT), 588 .depthWriteEnable = (aspects & VK_IMAGE_ASPECT_DEPTH_BIT), 590 .stencilTestEnable = (aspects & VK_IMAGE_ASPECT_STENCIL_BIT), 611 if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { 615 if (aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { 630 VkImageAspectFlags aspects, 646 (((aspects & VK_IMAGE_ASPECT_DEPTH_BIT) && clear_value.depth != 0.0 && 648 ((aspects & VK_IMAGE_ASPECT_STENCIL_BIT) && clear_value.stencil != 0))) 665 VkImageAspectFlags aspects, 560 create_depthstencil_pipeline(struct radv_device * device,VkImageAspectFlags aspects,uint32_t samples,int index,VkPipeline * pipeline,VkRenderPass render_pass) argument 628 depth_view_can_fast_clear(struct radv_cmd_buffer * cmd_buffer,const struct radv_image_view * iview,VkImageAspectFlags aspects,VkImageLayout layout,const VkClearRect * clear_rect,VkClearDepthStencilValue clear_value) argument 661 pick_depthstencil_pipeline(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_state * meta_state,const struct radv_image_view * iview,int samples_log2,VkImageAspectFlags aspects,VkImageLayout layout,const VkClearRect * clear_rect,VkClearDepthStencilValue clear_value) argument 726 VkImageAspectFlags aspects = clear_att->aspectMask; local in function:emit_depthstencil_clear 883 radv_get_htile_mask(const struct radv_image * image,VkImageAspectFlags aspects) argument 971 radv_can_fast_clear_depth(struct radv_cmd_buffer * cmd_buffer,const struct radv_image_view * iview,VkImageLayout image_layout,VkImageAspectFlags aspects,const VkClearRect * clear_rect,const VkClearDepthStencilValue clear_value,uint32_t view_mask) argument 1021 VkImageAspectFlags aspects = clear_att->aspectMask; local in function:radv_fast_clear_depth 1557 VkImageAspectFlags aspects = clear_att->aspectMask; local in function:emit_clear [all...] |
| H A D | radv_meta_blit2d.c | 58 VkImageAspectFlagBits aspects) 76 .aspectMask = aspects, 119 VkImageAspectFlagBits aspects, 147 create_iview(cmd_buffer, src_img, &tmp->iview, depth_format, aspects); 191 VkImageAspectFlagBits aspects) 193 create_iview(cmd_buffer, dst, &tmp->iview, depth_format, aspects); 371 unreachable("Processing blit2d with multiple aspects."); 55 create_iview(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_blit2d_surf * surf,struct radv_image_view * iview,VkFormat depth_format,VkImageAspectFlagBits aspects) argument 114 blit2d_bind_src(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_blit2d_surf * src_img,struct radv_meta_blit2d_buffer * src_buf,struct blit2d_src_temps * tmp,enum blit2d_src_type src_type,VkFormat depth_format,VkImageAspectFlagBits aspects,uint32_t log2_samples) argument 185 blit2d_bind_dst(struct radv_cmd_buffer * cmd_buffer,struct radv_meta_blit2d_surf * dst,uint32_t width,uint32_t height,VkFormat depth_format,struct blit2d_dst_temps * tmp,VkImageAspectFlagBits aspects) argument
|
| /xsrc/external/mit/MesaLib/dist/src/broadcom/vulkan/ |
| H A D | v3dv_formats.c | 99 const VkImageAspectFlags aspects = vk_format_aspects(vk_format); local in function:image_format_features 105 if ((aspects & supported_aspects) != aspects) 109 if ((aspects & zs_aspects) == VK_IMAGE_ASPECT_STENCIL_BIT) 134 if (aspects & VK_IMAGE_ASPECT_COLOR_BIT) { 139 } else if (aspects & zs_aspects) {
|
| H A D | v3dvx_device.c | 258 if (att->vk.aspects & VK_IMAGE_ASPECT_COLOR_BIT) 282 if (att->vk.aspects & VK_IMAGE_ASPECT_COLOR_BIT) 293 v3dX(zs_buffer_from_aspect_bits)(VkImageAspectFlags aspects) 297 const VkImageAspectFlags filtered_aspects = aspects & zs_aspects;
|
| H A D | v3dv_meta_clear.c | 135 * that any aspects to clear are present in the image. 137 assert(range->aspectMask & image->vk.aspects); 651 VkImageAspectFlags aspects, 659 const bool has_depth = aspects & VK_IMAGE_ASPECT_DEPTH_BIT; 660 const bool has_stencil = aspects & VK_IMAGE_ASPECT_STENCIL_BIT; 786 get_depth_clear_pipeline_cache_key(VkImageAspectFlags aspects, argument 800 const bool has_depth = (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) ? 1 : 0; 804 const bool has_stencil = (aspects & VK_IMAGE_ASPECT_STENCIL_BIT) ? 1 : 0; 925 VkImageAspectFlags aspects, 943 get_depth_clear_pipeline_cache_key(aspects, forma 650 create_depth_clear_pipeline(struct v3dv_device * device,VkImageAspectFlags aspects,struct v3dv_render_pass * pass,uint32_t subpass_idx,uint32_t samples,bool is_layered,VkPipelineLayout pipeline_layout,VkPipeline * pipeline) argument 924 get_depth_clear_pipeline(struct v3dv_device * device,VkImageAspectFlags aspects,struct v3dv_render_pass * pass,uint32_t subpass_idx,uint32_t attachment_idx,bool is_layered,struct v3dv_meta_depth_clear_pipeline ** pipeline) argument 1097 emit_subpass_ds_clear_rects(struct v3dv_cmd_buffer * cmd_buffer,struct v3dv_render_pass * pass,struct v3dv_subpass * subpass,VkImageAspectFlags aspects,const VkClearDepthStencilValue * clear_ds,bool is_layered,bool all_rects_same_layers,uint32_t rect_count,const VkClearRect * rects) argument [all...] |
| H A D | v3dvx_private.h | 180 v3dX(zs_buffer_from_aspect_bits)(VkImageAspectFlags aspects); 245 VkImageAspectFlags aspects,
|
| H A D | v3dvx_meta_common.c | 36 VkImageAspectFlags aspects; member in struct:rcl_clear_info 64 if (clear_info && (clear_info->aspects & VK_IMAGE_ASPECT_COLOR_BIT)) { 328 * even for depth/stencil aspects, because the hardware can't do raster 360 * depth and stencil aspects are copied as separate regions and 899 VkImageAspectFlags aspects, 915 emit_image_store(job->device, cl, framebuffer, image, aspects, 932 VkImageAspectFlags aspects, 938 emit_clear_image_layer_per_tile_list(job, framebuffer, image, aspects, 949 VkImageAspectFlags aspects, 957 .aspects 896 emit_clear_image_layer_per_tile_list(struct v3dv_job * job,struct v3dv_meta_framebuffer * framebuffer,struct v3dv_image * image,VkImageAspectFlags aspects,uint32_t layer,uint32_t level) argument 929 emit_clear_image_layers(struct v3dv_job * job,struct v3dv_image * image,struct v3dv_meta_framebuffer * framebuffer,VkImageAspectFlags aspects,uint32_t min_layer,uint32_t max_layer,uint32_t level) argument [all...] |
| /xsrc/external/mit/MesaLib/dist/src/intel/vulkan/ |
| H A D | anv_image.c | 67 /* Spec requires special aspects for modifier images. */ 461 image->vk.aspects & (VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV | 963 assert(!(image->vk.aspects & VK_IMAGE_ASPECT_DEPTH_BIT)); 964 assert(!(image->vk.aspects & VK_IMAGE_ASPECT_STENCIL_BIT)); 1018 u_foreach_bit(b, image->vk.aspects) { 1109 assert(image->vk.aspects == VK_IMAGE_ASPECT_COLOR_BIT); 1111 assert(!(image->vk.aspects & ~VK_IMAGE_ASPECT_PLANES_BITS_ANV)); 1136 u_foreach_bit(b, image->vk.aspects) { 1580 VkImageAspectFlags aspects, 1631 assert(util_bitcount(aspects) 1578 anv_image_get_memory_requirements(struct anv_device * device,struct anv_image * image,VkImageAspectFlags aspects,VkMemoryRequirements2 * pMemoryRequirements) argument 1654 VkImageAspectFlags aspects = image->vk.aspects; local in function:anv_GetImageMemoryRequirements2 1688 VkImageAspectFlags aspects = local in function:anv_GetDeviceImageMemoryRequirementsKHR [all...] |
| H A D | anv_blorp.c | 1104 if (image->vk.aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { 1114 if (image->vk.aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { 1594 assert(image->vk.aspects == VK_IMAGE_ASPECT_COLOR_BIT); 1623 VkImageAspectFlags aspects, 1630 assert(image->vk.aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | 1638 if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { 1646 if (aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { 1669 aspects & VK_IMAGE_ASPECT_DEPTH_BIT, 1671 (aspects & VK_IMAGE_ASPECT_STENCIL_BIT) ? 0xff : 0, 1684 if ((aspects 1621 anv_image_clear_depth_stencil(struct anv_cmd_buffer * cmd_buffer,const struct anv_image * image,VkImageAspectFlags aspects,enum isl_aux_usage depth_aux_usage,uint32_t level,uint32_t base_layer,uint32_t layer_count,VkRect2D area,float depth_value,uint8_t stencil_value) argument 1731 anv_image_hiz_clear(struct anv_cmd_buffer * cmd_buffer,const struct anv_image * image,VkImageAspectFlags aspects,uint32_t level,uint32_t base_layer,uint32_t layer_count,VkRect2D area,uint8_t stencil_value) argument [all...] |
| H A D | anv_formats.c | 562 const VkImageAspectFlags aspects = vk_format_aspects(vk_format); local in function:anv_get_image_format_features2 564 if (aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) { 576 if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) 579 if ((aspects & VK_IMAGE_ASPECT_DEPTH_BIT) && devinfo->ver >= 9) 582 if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) 588 assert(aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV);
|
| /xsrc/external/mit/MesaLib/dist/src/gallium/drivers/zink/ |
| H A D | zink_clear.c | 150 clear_zs_no_rp(struct zink_context *ctx, struct zink_resource *res, VkImageAspectFlags aspects, double depth, unsigned stencil, unsigned level, unsigned layer, unsigned layerCount) argument 159 range.aspectMask = aspects; 336 /* zs bits are both set here if those aspects should be cleared at some point */ 574 VkImageAspectFlags aspects = 0; local in function:fb_clears_apply_internal 576 aspects |= VK_IMAGE_ASPECT_DEPTH_BIT; 578 aspects |= VK_IMAGE_ASPECT_STENCIL_BIT; 579 clear_zs_no_rp(ctx, res, aspects, clear->zs.depth, clear->zs.stencil,
|
| /xsrc/external/mit/MesaLib/dist/docs/relnotes/ |
| H A D | 17.1.9.rst | 51 aspects."
|