mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
i965: Fix calculation of the image height at start level
- Fixes CTS tests: * GL44-CTS.shader_image_size.advanced-nonMS-cs-float * GL44-CTS.shader_image_size.advanced-nonMS-cs-int * GL44-CTS.shader_image_size.advanced-nonMS-cs-uint * GL44-CTS.shader_image_size.advanced-nonMS-gs-float * GL44-CTS.shader_image_size.advanced-nonMS-gs-int * GL44-CTS.shader_image_size.advanced-nonMS-gs-uint * GL44-CTS.shader_image_size.advanced-nonMS-tes-float * GL44-CTS.shader_image_size.advanced-nonMS-tes-int * GL44-CTS.shader_image_size.advanced-nonMS-tes-uint * GL44-CTS.shader_image_size.advanced-nonMS-vs-float * GL44-CTS.shader_image_size.advanced-nonMS-vs-int * GL44-CTS.shader_image_size.advanced-nonMS-vs-uint v1: (written by Dave Airlie) Always shift height images for levels. Fixed the CTS test. v2: Only shift height if the texture is not an 1D_ARRAY, it fixes assertion in GL44-CTS.texture_view.gettexparameter due to the original patch (Antia). v3: Remove the loop. Do not shift height either for 1D textures. Use an explicit switch and add an assertion (levels == 0) for multisampled textures (Jason). v4: Rectangle textures can not have levels either (Ilia Mirkin). Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Antia Puentes <apuentes@igalia.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
08bcbfdc07
commit
83e8617f4b
1 changed files with 21 additions and 6 deletions
|
|
@ -47,12 +47,27 @@ intel_miptree_create_for_teximage(struct brw_context *brw,
|
|||
DBG("%s\n", __func__);
|
||||
|
||||
/* Figure out image dimensions at start level. */
|
||||
for (i = intelImage->base.Base.Level; i > 0; i--) {
|
||||
width <<= 1;
|
||||
if (height != 1)
|
||||
height <<= 1;
|
||||
if (intelObj->base.Target == GL_TEXTURE_3D)
|
||||
depth <<= 1;
|
||||
switch(intelObj->base.Target) {
|
||||
case GL_TEXTURE_2D_MULTISAMPLE:
|
||||
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
|
||||
case GL_TEXTURE_RECTANGLE:
|
||||
assert(intelImage->base.Base.Level == 0);
|
||||
break;
|
||||
case GL_TEXTURE_3D:
|
||||
depth <<= intelImage->base.Base.Level;
|
||||
/* Fall through */
|
||||
case GL_TEXTURE_2D:
|
||||
case GL_TEXTURE_2D_ARRAY:
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
case GL_TEXTURE_CUBE_MAP_ARRAY:
|
||||
height <<= intelImage->base.Base.Level;
|
||||
/* Fall through */
|
||||
case GL_TEXTURE_1D:
|
||||
case GL_TEXTURE_1D_ARRAY:
|
||||
width <<= intelImage->base.Base.Level;
|
||||
break;
|
||||
default:
|
||||
unreachable("Unexpected target");
|
||||
}
|
||||
|
||||
/* Guess a reasonable value for lastLevel. This is probably going
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue