using glTextureView() on eglimage-backed bgr* textures has been
determined to cause format misinterpretation issues, such as swapping
the red/blue channels.
This adds a convenience function for detecting these unsupported view
uses. It will be used to prevent creating views in the following commits.
Signed-off-by: Ryan Neph <ryanneph@google.com>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/725>
There are many combinations of invalid arguments for OpenGL functions
and it is impractical to cover all of them.
Even if nothing is wrong with the user, GL_CONTEXT_LOST and
GL_OUT_OF_MEMORY can also occur in many GL functions due to hardware
problems. They can leave the context in an invalid state which can
result in a reliability or security issue.
Check GL errors after an operation completes and prevent from using the
GL context after a GL error occurred.
spec@!opengl 1.5@draw-vertices, spec@!opengl 1.5@draw-vertices-user,
and spec@!opengl 2.0@gl-2.0-vertexattribpointer are marked as crash in
.gitlab-ci/expectations/host/piglit-virgl-gles-fails.txt because they
require GL_DOUBLE specification for glVertexAttribPointer, which is
not supported by OpenGL ES. Avoiding the crashes requires capability
checks on the guest, which this change does not implement.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/715>
VREND_DEBUG_ENABLED represents if debugging features are enabled and is
controlled by NDEBUG macro. By using VREND_DEBUG_ENABLED in
an if statement instead of using NDEBUG in ifdef, the compiler can
validate the content of the conditional and know its variable usage to
avoid meaningless warnings.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/715>
v2: Check function availability
v3: Isolate function availability check to a variable (Gert Wollny)
v4: Use util_format_name and add a utility function (Gert Wollny)
v5: Move variables to narrower scopes (Gert Wollny)
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/715>
The compressed formats are incompatible with
GL_TEXTURE_RECTANGLE on Mesa 21.3.6.
This also fixes spec@!opengl 1.0@gl-1.0-dlist-bitmap, which makes
the guest to have GL_TEXTURE_RECTANGLE but TGSI specifies
TGSI_TEXTURE_2D, on OpenGL ES by always looking at the target of
given texture.
v2: Use the result of compatibility check in shader transformation.
(Gert Wollny)
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/715>
We've got bug reports with
vkr: vkExecuteCommandStreamsMESA resulted in CS error
and nothing else.
As far as I can tell, the decoder, the encoder, and vn_dispatch_command
all log on CS errors. The problem should be in
vkr_dispatch_vkExecuteCommandStreamsMESA. Make
vkr_dispatch_vkExecuteCommandStreamsMESA chatty as well.
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/722>
VIRGL_BIND_PREFER_EMULATED_BGRA macro was removed when
the old BGRA emulation was removed, but that makes src/virgl_hw.h
incompatible with Mesa, which still has a reference to the macro.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/716>
Apply the same logic as done in commit 08e7afd116 for
the input as we also need to take the indirect output into account.
Fixes running these two dEQP tests:
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_static_loop_write_static_loop_read
dEQP-GLES2.functional.shaders.indexing.uniform_array.vec4_static_read_vertex
Signed-off-by: Corentin Noël <corentin.noel@collabora.com>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
virgl_renderer_resource_get_info is used to get texture information for
scanout. However, it is also crucial to configure the texture correctly
for scanout. Replace it with virgl_renderer_borrow_texture_for_scanout,
which "borrows" the texture and modifies its configuration.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Commit a79e837b0d changed the GLES version
requirement of the shaders to support blitting multi-sample textures,
which is unavailable on GLES <3.1. However, the change was applied for
all shaders, resulting in faults when blitting single-sample textures
with GLES <3.1.
Require GLES 3.1 only in the shaders for multi-sample textures, which
are guarded with the feature detection.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
v2: * update logic for when to use gbm transfers and send
another caparbility flag to the guest about which
formats can be read back from
* Add comment about GBM logic (John)
v3: * Only enable gbm readback for scanout textures, and signal
the guest when gbm is used, so that it can use stageing
texture transfers in this case.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
There are many combinations of invalid arguments for OpenGL functions
and it is impractical to cover all of them.
Even if nothing is wrong with the user, GL_CONTEXT_LOST and
GL_OUT_OF_MEMORY can also occur in many GL functions due to hardware
problems. They can leave the context in an invalid state which can
result in a reliability or security issue.
Check GL errors after an operation completes and prevent from using the
GL context after a GL error occurred.
spec@!opengl 1.5@draw-vertices, spec@!opengl 1.5@draw-vertices-user,
and spec@!opengl 2.0@gl-2.0-vertexattribpointer are marked as crash in
.gitlab-ci/expectations/host/piglit-virgl-gles-fails.txt because they
require GL_DOUBLE specification for glVertexAttribPointer, which is
not supported by OpenGL ES. Avoiding the crashes requires capability
checks on the guest, which this change does not implement.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
A texture may have been deleted in another context. Such a texture
cannot be bound again once it is unbound.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
VREND_DEBUG_ENABLED represents if debugging features are enabled and is
controlled by NDEBUG macro. By using VREND_DEBUG_ENABLED in
an if statement instead of using NDEBUG in ifdef, the compiler can
validate the content of the conditional and know its variable usage to
avoid meaningless warnings.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
v2: Check function availability
v3: Isolate function availability check to a variable (Gert Wollny)
v4: Use util_format_name and add a utility function (Gert Wollny)
v5: Move variables to narrower scopes (Gert Wollny)
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
GL_IMPLEMENTATION_COLOR_READ_TYPE and
GL_IMPLEMENTATION_COLOR_READ_FORMAT works only if a texture is
attached as a color buffer.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
The compressed formats are incompatible with
GL_TEXTURE_RECTANGLE on Mesa 21.3.6.
This also fixes spec@!opengl 1.0@gl-1.0-dlist-bitmap, which makes
the guest to have GL_TEXTURE_RECTANGLE but TGSI specifies
TGSI_TEXTURE_2D, on OpenGL ES by always looking at the target of
given texture.
v2: Use the result of compatibility check in shader transformation.
(Gert Wollny)
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
v2:
* Fix type of bit mask (Gert Wollny)
* Make the calculation of VREND_SHADER_SAMPLER_VIEWS_MASK_LENGTH
simpler (Gert Wollny)
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
minigbm allocations being enabled does not imply that GBM is also
initialized, e.g. if the renderer uses a GLX context, so don't try
to dereference gbm.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: John Bates <jbates@chromium.org>
This is the changes automatically generated from the venus-protocol
repository.
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Signed-off-by: Igor Torrente <igor.torrente@collabora.com>