etnaviv: completely turn off MSAA MSAA worked before etnaviv landed in upstream mesa but got broken over time. Disable MSAA completely until it is fixed again. Fixes problems/crashes with applications that want to make use of MSAA. Cc: <mesa-stable@lists.freedesktop.org> Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5608>
gallium: replace 16BIT_TEMPS cap with 16BIT_CONSTS All drivers that support mediump lowering should support 16BIT_TEMPS, but some do not also want 16b consts to be lowered. Replace the pipe cap in preperation to remove LowerPrecisionTemporaries. Note: also updates reference checksums for the arm64_a630_traces job, due to lowering more to 16b Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6189>
etnaviv: introduce struct etna_compiler This struct will be used to for state saved across compiler invocations. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5996>
gallium: add PIPE_SHADER_CAP_GLSL_16BIT_TEMPS for LowerPrecisionTemporaries Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5746>
gallium: Add pipe cap for primitive restart with fixed index Adds PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX which is a subset of the primitive restart cap for when the hardware can only support the fixed indices specified in GLES. The switch statements were automatically modified with this command: find \( \( -name \*.cpp -o -name \*.c \) \! -type l \) \ -exec sed -i -r \ 's/^(\s*case\s+PIPE_CAP_PRIMITIVE_RESTART)\s*:.*$/\0\n\1_FIXED_INDEX:/' \ {} \; v2: Add a note in screen.rst Reviewed-by: Eric Anholt <eric@anholt.net> (v1) Reviewed by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5559>
gallium: add shader caps INT16 and FP16_DERIVATIVES Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5002>
etnaviv: don't expose timer queries We don't support any timer queries, so stop lying about our ability to do so. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5086>
gallium: rename 'state tracker' to 'frontend' Acked-by: Eric Anholt <eric@anholt.net> Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4902>
etnaviv: Disable seamless cube map on GC880 The GC880 on iMX6DL indicates in it's minorFeatures2 register that it does support SEAMLESS_CUBE_MAP, however when the TE.SAMPLER_CONFIG1 VIVS_TE_SAMPLER_CONFIG1_SEAMLESS_CUBE_MAP bit is set on GC880 on iMX6DL, the result is corrupted image. In particular, the following ~112 dEQPs are affected and fail: dEQP-GLES2.functional.texture.filtering.cube.* This only happens on MX6DL GC880, MX6Q GC2000 and STM32MP1 GC400(GCnano) do not report the minorFeatures2 SEAMLESS_CUBE_MAP bit and ignore the TE_SAMPLER_CONFIG1 VIVS_TE_SAMPLER_CONFIG1_SEAMLESS_CUBE_MAP bit (note that ss->seamless_cube_map is unconditionally set by mesa at times even PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE returns 0), so there is no visible problem and there are no failing dEQP tests on the GC2000 and GCnano. This might imply that the minorFeatures2 SEAMLESS_CUBE_MAP has some different meaning on GC880 or the SEAMLESS_CUBE_MAP behaves differently on the GC880. This patch does not set the SEAMLESS_CUBE_MAP bit on hardware which does not indicate support for seamless cube map and on GC880, which results in reduction in failed dEQPs: 635 to 186 on GC880, 274 to 270 on GC2000 and no change on GC400(GCnano). Fixes: 8dd26fa2f06 ("etnaviv: support GL_ARB_seamless_cubemap_per_texture") Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com> Signed-off-by: Marek Vasut <marex@denx.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4865>
etnaviv: anisotropic filtering is supported starting with HALTI0 Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2888>
etnaviv: Avoid shift overflow Building with AOSP I'm seeing: external/mesa3d/src/gallium/drivers/etnaviv/etnaviv_screen.c:245:31: error: signed shift result (0x100000000) requires 34 bits to represent, but 'int' only has 32 bits [-Werror,-Wshift-overflow] system_memory = 4096 << 20; system_memory is a uint_64t, so this patch addresses the issue by casting 4096 to a unint_64t before the shift is done. Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4175>
etnaviv: enable shareable shaders We are not using any pctx reference in the shader so it seems fine to enable this cap. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4095> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4095>
etnaviv: implement emit_string_marker Writes string to cmdstream in payload of a nop command. Could be useful for internal driver debugging too. Here is how it looks decoded: 0x18000000, /* NOP (3) OP=NOP */ 0x65736572, /* rese */ 0x18000000, /* NOP (3) OP=NOP */ 0x00000074, /* t */ 0x00000000, /* GL.API_MODE := OPENGL */ or 0x00000705, /* GL.STALL_TOKEN := FROM=RA,TO=PE,FLIP0=0,FLIP1=0 */ 0x00000001, /* TS.FLUSH_CACHE := FLUSH=1 */ 0x18000000, /* NOP (3) OP=NOP */ 0x616e7465, /* etna */ 0x18000000, /* NOP (3) OP=NOP */ 0x6275735f, /* _sub */ 0x18000000, /* NOP (3) OP=NOP */ 0x5f74696d, /* mit_ */ 0x18000000, /* NOP (3) OP=NOP */ 0x735f7372, /* rs_s */ 0x18000000, /* NOP (3) OP=NOP */ 0x65746174, /* tate */ 0x00004606, /* RS.CONFIG := SOURCE_FORMAT=A8R8G8B8 Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3744> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3744>
etnaviv: ask kernel for max number of supported varyings The inital etnaviv kernel driver in 4.5 has support for this param. See kernel commit 602eb48966d7b7f7e64dca8d9ea2842d83bfae73 Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Jonathan Marek <jonathan@marek.ca> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3827>
etnaviv: enable texture upload memory throttling Fixes oom-killer during piglit's streaming-texture-upload on a SolidRun CuBox-i with 2GB of RAM. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3745> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3745>
etnaviv: implement UBOs At the same time, use pre-HALTI2 to use address register for indirect uniform loads, since integers/LOAD instruction isn't always available. Passes all dEQP-GLES3.functional.ubo.* on GC7000L. GC3000 with an extra flush hack passes most of them, but still fails on some of the cases with many loads. Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3389> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3389>
etnaviv: add deqp debug option This new debug option will fake some driver CAPs to be able to run dEQP for GLES3. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Jonathan Marek <jonathan@marek.ca> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3351> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3351>
etnaviv: HALTI2+ instanced draw Fixes: dEQP-GLES3.functional.draw.draw_arrays_instanced.* dEQP-GLES3.functional.draw.draw_elements_instanced.* Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
etnaviv: gc400 does not support any vertex sampler On STM32MP1 fixes the dEQPs below and changes the dEQP run statistics to: - Passed: 16856/17346 (97.2%) - Failed: 236/17346 (1.4%) - Not supported: 199/17346 (1.1%) + Passed: 16780/17346 (96.7%) + Failed: 86/17346 (0.5%) + Not supported: 425/17346 (2.5%) Warnings: 55/17346 (0.3%) dEQP-GLES2.functional.shaders.struct.uniform.sampler_vertex dEQP-GLES2.functional.shaders.struct.uniform.sampler_nested_vertex dEQP-GLES2.functional.shaders.struct.uniform.sampler_array_vertex dEQP-GLES2.functional.shaders.struct.uniform.sampler_in_function_arg_vertex dEQP-GLES2.functional.shaders.struct.uniform.sampler_in_array_function_arg_vertex dEQP-GLES2.functional.shaders.texture_functions.vertex.texture2d dEQP-GLES2.functional.shaders.texture_functions.vertex.texture2dproj_vec3 dEQP-GLES2.functional.shaders.texture_functions.vertex.texture2dproj_vec4 dEQP-GLES2.functional.shaders.texture_functions.vertex.texture2dlod dEQP-GLES2.functional.shaders.texture_functions.vertex.texture2dprojlod_vec3 dEQP-GLES2.functional.shaders.texture_functions.vertex.texture2dprojlod_vec4 dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecube dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod dEQP-GLES2.functional.shaders.random.texture.vertex.0 dEQP-GLES2.functional.shaders.random.texture.vertex.1 dEQP-GLES2.functional.shaders.random.texture.vertex.2 dEQP-GLES2.functional.shaders.random.texture.vertex.3 dEQP-GLES2.functional.shaders.random.texture.vertex.4 dEQP-GLES2.functional.shaders.random.texture.vertex.5 dEQP-GLES2.functional.shaders.random.texture.vertex.6 dEQP-GLES2.functional.shaders.random.texture.vertex.7 dEQP-GLES2.functional.shaders.random.texture.vertex.8 dEQP-GLES2.functional.shaders.random.texture.vertex.9 dEQP-GLES2.functional.shaders.random.texture.vertex.10 dEQP-GLES2.functional.shaders.random.texture.vertex.11 dEQP-GLES2.functional.shaders.random.texture.vertex.12 dEQP-GLES2.functional.shaders.random.texture.vertex.13 dEQP-GLES2.functional.shaders.random.texture.vertex.14 dEQP-GLES2.functional.shaders.random.texture.vertex.16 dEQP-GLES2.functional.shaders.random.texture.vertex.17 dEQP-GLES2.functional.shaders.random.texture.vertex.18 dEQP-GLES2.functional.shaders.random.texture.vertex.19 dEQP-GLES2.functional.shaders.random.texture.vertex.20 dEQP-GLES2.functional.shaders.random.texture.vertex.22 dEQP-GLES2.functional.shaders.random.texture.vertex.23 dEQP-GLES2.functional.shaders.random.texture.vertex.24 dEQP-GLES2.functional.shaders.random.texture.vertex.26 dEQP-GLES2.functional.shaders.random.texture.vertex.28 dEQP-GLES2.functional.shaders.random.texture.vertex.29 dEQP-GLES2.functional.shaders.random.texture.vertex.31 dEQP-GLES2.functional.shaders.random.texture.vertex.34 dEQP-GLES2.functional.shaders.random.texture.vertex.37 dEQP-GLES2.functional.shaders.random.texture.vertex.38 dEQP-GLES2.functional.shaders.random.texture.vertex.39 dEQP-GLES2.functional.shaders.random.texture.vertex.40 dEQP-GLES2.functional.shaders.random.texture.vertex.42 dEQP-GLES2.functional.shaders.random.texture.vertex.43 dEQP-GLES2.functional.shaders.random.texture.vertex.44 dEQP-GLES2.functional.shaders.random.texture.vertex.45 dEQP-GLES2.functional.shaders.random.texture.vertex.48 dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_nearest_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_nearest_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_nearest_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_linear_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_linear_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_linear_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_nearest_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_nearest_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_nearest_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_linear_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_linear_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_linear_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_nearest_nearest_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_nearest_nearest_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_nearest_nearest_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_nearest_linear_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_nearest_linear_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_nearest_linear_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_nearest_nearest_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_nearest_nearest_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_nearest_nearest_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_nearest_linear_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_nearest_linear_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_nearest_linear_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_mirror dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_clamp dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_repeat dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_mirror dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_clamp dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_repeat dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_mirror dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_clamp dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_repeat dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_mirror dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_clamp dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_repeat dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_mirror dEQP-GLES2.functional.fbo.api.attach_names dEQP-GLES2.functional.uniform_api.info_query.basic.sampler2D_vertex dEQP-GLES2.functional.uniform_api.info_query.basic.sampler2D_both dEQP-GLES2.functional.uniform_api.info_query.basic.samplerCube_vertex dEQP-GLES2.functional.uniform_api.info_query.basic.samplerCube_both dEQP-GLES2.functional.uniform_api.info_query.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.info_query.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.info_query.basic_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.info_query.basic_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.info_query.struct_in_array.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.info_query.struct_in_array.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.info_query.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.info_query.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.info_query.nested_structs_arrays.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.info_query.nested_structs_arrays.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.info_query.unused_uniforms.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.info_query.unused_uniforms.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic.sampler2D_both dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic.samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic.samplerCube_both dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.basic_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.struct_in_array.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.struct_in_array.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_both dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_both dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic.samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic.samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.nested_structs_arrays.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.get_uniform.nested_structs_arrays.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.nested_structs_arrays.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.nested_structs_arrays.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array.sampler2D_vertex dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array.sampler2D_both dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.value.assigned.unused_uniforms.sampler2D_samplerCube_vertex dEQP-GLES2.functional.uniform_api.value.assigned.unused_uniforms.sampler2D_samplerCube_both dEQP-GLES2.functional.uniform_api.random.0 dEQP-GLES2.functional.uniform_api.random.3 dEQP-GLES2.functional.uniform_api.random.6 dEQP-GLES2.functional.uniform_api.random.11 dEQP-GLES2.functional.uniform_api.random.14 dEQP-GLES2.functional.uniform_api.random.21 dEQP-GLES2.functional.uniform_api.random.22 dEQP-GLES2.functional.uniform_api.random.24 dEQP-GLES2.functional.uniform_api.random.25 dEQP-GLES2.functional.uniform_api.random.29 dEQP-GLES2.functional.uniform_api.random.30 dEQP-GLES2.functional.uniform_api.random.32 dEQP-GLES2.functional.uniform_api.random.33 dEQP-GLES2.functional.uniform_api.random.37 dEQP-GLES2.functional.uniform_api.random.41 dEQP-GLES2.functional.uniform_api.random.49 dEQP-GLES2.functional.uniform_api.random.51 dEQP-GLES2.functional.uniform_api.random.55 dEQP-GLES2.functional.uniform_api.random.61 dEQP-GLES2.functional.uniform_api.random.69 dEQP-GLES2.functional.uniform_api.random.72 dEQP-GLES2.functional.uniform_api.random.78 dEQP-GLES2.functional.uniform_api.random.79 dEQP-GLES2.functional.uniform_api.random.82 dEQP-GLES2.functional.uniform_api.random.87 dEQP-GLES2.functional.uniform_api.random.88 dEQP-GLES2.functional.uniform_api.random.94 dEQP-GLES2.functional.uniform_api.random.95 dEQP-GLES2.functional.uniform_api.random.96 Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Marek Vasut <marex@denx.de>
etnaviv: check if MSAA is supported Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Jonathan Marek <jonathan@marek.ca>