intel/isl: fix 2d view of 3d textures
according to KHR_gl_texture_3D_image:
If <target> is EGL_GL_TEXTURE_3D_KHR, <buffer> must be the name of a
complete, nonzero, GL_TEXTURE_3D (or equivalent in GL extensions) target
texture object, cast
into the type EGLClientBuffer. <attr_list> should specify the mipmap
level (EGL_GL_TEXTURE_LEVEL_KHR) and z-offset (EGL_GL_TEXTURE_ZOFFSET_KHR)
which will be used as the EGLImage source; the specified mipmap level must
be part of <buffer>, and the specified z-offset must be smaller than the
depth of the specified mipmap level.
thus a 2d view of a 3d surface is not only legal, it's part of the spec and
must be supported when available
cc: mesa-stable
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15584>
This commit is contained in:
committed by
Marge Bot
parent
806dcf9db7
commit
65ec846f77
@@ -330,16 +330,13 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
|
||||
* assert-failures in the packing function below, we only set the field
|
||||
* when it's actually going to be used by the hardware.
|
||||
*
|
||||
* Similaraly, the MinimumArrayElement field is ignored by all hardware
|
||||
* prior to Sky Lake when texturing and we want it set to 0 anyway.
|
||||
* Since it's already initialized to 0, we can just leave it alone for
|
||||
* texture surfaces.
|
||||
* The MinimumArrayElement field is ignored by all hardware
|
||||
* prior to Sky Lake when texturing, and drivers are responsible
|
||||
* for validating the correctness of this parameter.
|
||||
* KHR_gl_texture_3D_image requires this functionality.
|
||||
*/
|
||||
if (info->view->usage & (ISL_SURF_USAGE_RENDER_TARGET_BIT |
|
||||
ISL_SURF_USAGE_STORAGE_BIT)) {
|
||||
s.MinimumArrayElement = info->view->base_array_layer;
|
||||
s.RenderTargetViewExtent = info->view->array_len - 1;
|
||||
}
|
||||
s.MinimumArrayElement = info->view->base_array_layer;
|
||||
s.RenderTargetViewExtent = info->view->array_len - 1;
|
||||
break;
|
||||
default:
|
||||
unreachable("bad SurfaceType");
|
||||
|
||||
Reference in New Issue
Block a user