X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi915%2Fintel_mipmap_tree.c;h=92f116b9e055ce5d2dce2136c4103cfa3e0eb225;hb=e5a632a2564129c7e4a695155934893914723904;hp=307ad4df8915d72cc8386dbb536aff6c0f6b4065;hpb=5c8aa21309cb8cabd61b73b6706b295d6237d53d;p=mesa.git diff --git a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c index 307ad4df891..92f116b9e05 100644 --- a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c @@ -1,8 +1,8 @@ /************************************************************************** - * + * * Copyright 2006 VMware, Inc. * All Rights Reserved. - * + * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including @@ -10,11 +10,11 @@ * distribute, sub license, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: - * + * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial portions * of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. @@ -22,7 +22,7 @@ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * + * **************************************************************************/ #include @@ -60,11 +60,6 @@ target_to_target(GLenum target) } } -/** - * @param for_bo Indicates that the caller is - * intel_miptree_create_for_bo(). If true, then do not create - * \c stencil_mt. - */ struct intel_mipmap_tree * intel_miptree_create_layout(struct intel_context *intel, GLenum target, @@ -73,8 +68,7 @@ intel_miptree_create_layout(struct intel_context *intel, GLuint last_level, GLuint width0, GLuint height0, - GLuint depth0, - bool for_bo) + GLuint depth0) { struct intel_mipmap_tree *mt = calloc(sizeof(*mt), 1); if (!mt) @@ -102,7 +96,7 @@ intel_miptree_create_layout(struct intel_context *intel, mt->cpp = _mesa_get_format_bytes(mt->format) / bw; mt->compressed = _mesa_is_format_compressed(format); - mt->refcount = 1; + mt->refcount = 1; if (target == GL_TEXTURE_CUBE_MAP) { assert(depth0 == 1); @@ -114,9 +108,8 @@ intel_miptree_create_layout(struct intel_context *intel, mt->physical_depth0 = depth0; intel_get_texture_alignment_unit(intel, mt->format, - &mt->align_w, &mt->align_h); + &mt->align_w, &mt->align_h); - (void) intel; if (intel->is_945) i945_miptree_layout(mt); else @@ -165,14 +158,14 @@ intel_miptree_choose_tiling(struct intel_context *intel, struct intel_mipmap_tree * intel_miptree_create(struct intel_context *intel, - GLenum target, - mesa_format format, - GLuint first_level, - GLuint last_level, - GLuint width0, - GLuint height0, - GLuint depth0, - bool expect_accelerated_upload, + GLenum target, + mesa_format format, + GLuint first_level, + GLuint last_level, + GLuint width0, + GLuint height0, + GLuint depth0, + bool expect_accelerated_upload, enum intel_miptree_tiling_mode requested_tiling) { struct intel_mipmap_tree *mt; @@ -180,12 +173,10 @@ intel_miptree_create(struct intel_context *intel, mt = intel_miptree_create_layout(intel, target, format, - first_level, last_level, width0, - height0, depth0, - false); - /* - * pitch == 0 || height == 0 indicates the null texture - */ + first_level, last_level, width0, + height0, depth0); + + /* pitch == 0 || height == 0 indicates the null texture */ if (!mt || !mt->total_width || !mt->total_height) { intel_miptree_release(&mt); return NULL; @@ -200,11 +191,11 @@ intel_miptree_create(struct intel_context *intel, bool y_or_x = tiling == (I915_TILING_Y | I915_TILING_X); mt->region = intel_region_alloc(intel->intelScreen, - y_or_x ? I915_TILING_Y : tiling, - mt->cpp, - total_width, - total_height, - expect_accelerated_upload); + y_or_x ? I915_TILING_Y : tiling, + mt->cpp, + total_width, + total_height, + expect_accelerated_upload); /* If the region is too large to fit in the aperture, we need to use the * BLT engine to support it. The BLT paths can't currently handle Y-tiling, @@ -262,8 +253,7 @@ intel_miptree_create_for_bo(struct intel_context *intel, mt = intel_miptree_create_layout(intel, GL_TEXTURE_2D, format, 0, 0, - width, height, 1, - true); + width, height, 1); if (!mt) { free(region); return mt; @@ -286,13 +276,9 @@ intel_miptree_create_for_bo(struct intel_context *intel, /** - * For a singlesample DRI2 buffer, this simply wraps the given region with a miptree. - * - * For a multisample DRI2 buffer, this wraps the given region with - * a singlesample miptree, then creates a multisample miptree into which the - * singlesample miptree is embedded as a child. + * Wraps the given region with a miptree. */ -struct intel_mipmap_tree* +struct intel_mipmap_tree * intel_miptree_create_for_dri2_buffer(struct intel_context *intel, unsigned dri_attachment, mesa_format format, @@ -325,13 +311,9 @@ intel_miptree_create_for_dri2_buffer(struct intel_context *intel, } /** - * For a singlesample image buffer, this simply wraps the given region with a miptree. - * - * For a multisample image buffer, this wraps the given region with - * a singlesample miptree, then creates a multisample miptree into which the - * singlesample miptree is embedded as a child. + * Wraps the given region with a miptree. */ -struct intel_mipmap_tree* +struct intel_mipmap_tree * intel_miptree_create_for_image_buffer(struct intel_context *intel, enum __DRIimageBufferMask buffer_type, mesa_format format, @@ -357,7 +339,7 @@ intel_miptree_create_for_image_buffer(struct intel_context *intel, return mt; } -struct intel_mipmap_tree* +struct intel_mipmap_tree * intel_miptree_create_for_renderbuffer(struct intel_context *intel, mesa_format format, uint32_t width, @@ -403,7 +385,7 @@ intel_miptree_release(struct intel_mipmap_tree **mt) intel_region_release(&((*mt)->region)); for (i = 0; i < MAX_TEXTURE_LEVELS; i++) { - free((*mt)->level[i].slice); + free((*mt)->level[i].slice); } free(*mt); @@ -463,24 +445,10 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt, * minification. This will also catch images not present in the * tree, changed targets, etc. */ - if (mt->target == GL_TEXTURE_2D_MULTISAMPLE || - mt->target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) { - /* nonzero level here is always bogus */ - assert(level == 0); - - if (width != mt->logical_width0 || - height != mt->logical_height0 || - depth != mt->logical_depth0) { - return false; - } - } - else { - /* all normal textures, renderbuffers, etc */ - if (width != mt->level[level].width || - height != mt->level[level].height || - depth != mt->level[level].depth) { - return false; - } + if (width != mt->level[level].width || + height != mt->level[level].height || + depth != mt->level[level].depth) { + return false; } return true; @@ -489,9 +457,9 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt, void intel_miptree_set_level_info(struct intel_mipmap_tree *mt, - GLuint level, - GLuint x, GLuint y, - GLuint w, GLuint h, GLuint d) + GLuint level, + GLuint x, GLuint y, + GLuint w, GLuint h, GLuint d) { mt->level[level].width = w; mt->level[level].height = h; @@ -512,8 +480,8 @@ intel_miptree_set_level_info(struct intel_mipmap_tree *mt, void intel_miptree_set_image_offset(struct intel_mipmap_tree *mt, - GLuint level, GLuint img, - GLuint x, GLuint y) + GLuint level, GLuint img, + GLuint x, GLuint y) { if (img == 0 && level == 0) assert(x == 0 && y == 0); @@ -531,8 +499,8 @@ intel_miptree_set_image_offset(struct intel_mipmap_tree *mt, void intel_miptree_get_image_offset(struct intel_mipmap_tree *mt, - GLuint level, GLuint slice, - GLuint *x, GLuint *y) + GLuint level, GLuint slice, + GLuint *x, GLuint *y) { assert(slice < mt->level[level].depth); @@ -622,11 +590,11 @@ intel_miptree_copy_slice_sw(struct intel_context *intel, static void intel_miptree_copy_slice(struct intel_context *intel, - struct intel_mipmap_tree *dst_mt, - struct intel_mipmap_tree *src_mt, - int level, - int face, - int depth) + struct intel_mipmap_tree *dst_mt, + struct intel_mipmap_tree *src_mt, + int level, + int face, + int depth) { mesa_format format = src_mt->format; @@ -680,8 +648,8 @@ intel_miptree_copy_slice(struct intel_context *intel, */ void intel_miptree_copy_teximage(struct intel_context *intel, - struct intel_texture_image *intelImage, - struct intel_mipmap_tree *dst_mt, + struct intel_texture_image *intelImage, + struct intel_mipmap_tree *dst_mt, bool invalidate) { struct intel_mipmap_tree *src_mt = intelImage->mt; @@ -730,9 +698,9 @@ intel_miptree_unmap_raw(struct intel_mipmap_tree *mt) static void intel_miptree_map_gtt(struct intel_context *intel, - struct intel_mipmap_tree *mt, - struct intel_miptree_map *map, - unsigned int level, unsigned int slice) + struct intel_mipmap_tree *mt, + struct intel_miptree_map *map, + unsigned int level, unsigned int slice) { unsigned int bw, bh; void *base; @@ -778,9 +746,9 @@ intel_miptree_unmap_gtt(struct intel_mipmap_tree *mt) static void intel_miptree_map_blit(struct intel_context *intel, - struct intel_mipmap_tree *mt, - struct intel_miptree_map *map, - unsigned int level, unsigned int slice) + struct intel_mipmap_tree *mt, + struct intel_miptree_map *map, + unsigned int level, unsigned int slice) { map->mt = intel_miptree_create(intel, GL_TEXTURE_2D, mt->format, 0, 0, @@ -821,10 +789,10 @@ fail: static void intel_miptree_unmap_blit(struct intel_context *intel, - struct intel_mipmap_tree *mt, - struct intel_miptree_map *map, - unsigned int level, - unsigned int slice) + struct intel_mipmap_tree *mt, + struct intel_miptree_map *map, + unsigned int level, + unsigned int slice) { struct gl_context *ctx = &intel->ctx; @@ -905,7 +873,7 @@ intel_miptree_map(struct intel_context *intel, struct intel_miptree_map *map; map = intel_miptree_attach_map(mt, level, slice, x, y, w, h, mode); - if (!map){ + if (!map) { *out_ptr = NULL; *out_stride = 0; return;