when virgl_renderer_init is called from qemu for initializing D-GL
no context type flags are set and the context remains at NONE.
Assume in this case that gl_colorspace is true, otherwise the
feat_srgb_write_control flag will be cleared and the guest only
gets OpenGL 2.1 compatibility.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Elie Tournier <elie.tournier@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
As of 2018/11/30 EXT_texture_sRGB_R8 is also a valid extension for
desktop GL. Hence, move the format into the joined list so that
it can be picked up if the D-GL host supports it.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
The old mesa version had a bug in handling EXT_texture_sRGB_R8 exposing
the texture type even though the extension was not supported by the API.
Bump also libdrm since it needs the update.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
We can't cache the current states on the texture-view, as multiple views
can point to the same texture. Instead, we need to cache the state on
the texture.
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Fixes: 8d288c4 ("vrend: update texture state on a per view base")
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
tgsitargettogltarget never returns a value that evaluates to zero, so
this condition can't trigger. Let's drop the code.
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Texture views with emulated alpha also needs to get their border-color
swizzled. So let's check the texture-view instead of the resource.
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This is going to make a difference for the next patch.
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Using GLenum here makes it sound like this is used for OpenGL formats,
and not for pipe_format, which it really is. So let's change the type to
reflect what it really is.
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This toggle only affect fixed-function fragment-shading, which we don't
use at all. So let's not waste time setting unused state.
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
We shouldn't call glTexBuffer unless we know the feature is enabled,
otherwise a rouge client might be able to crash the host.
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
[airlied: fix whitespace]
Signed-off-by: Dave Airlie <airlied@redhat.com>
v2: Instead of releasing the UBO's at the end don't reference count them.
The guest keeps track of these resources and their reference counts,
so it will not release the UBO's without re-setting the binding during
the live time of a client progra, However, at final clean up the UBO's
are not rebound before the resourse is released in the guest side resulting
in the memory leak. When we skip the ref-counting on the host side the
resourses are cleaned up correctly without breaking the program otherwise.
Fixes resource leaks:
Direct leak of 2448 byte(s) in 9 object(s) allocated from:
#0 0x7fe3151aba68 in __interceptor_calloc (/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0/libasan.so+0xdba68)
#1 0x7fe314b89ea6 in vrend_renderer_resource_create ../../../../virgl-gitlab/src/vrend_renderer.c:5834
#2 0x7fe314b52b44 in virgl_renderer_resource_create ../../../../virgl-gitlab/src/virglrenderer.c:63
#3 0x560533f27852 in vtest_create_resource2 ../../../../virgl-gitlab/vtest/vtest_renderer.c:432
#4 0x560533f254fa in vtest_main_run_renderer ../../../../virgl-gitlab/vtest/vtest_server.c:359
#5 0x560533f244df in main ../../../../virgl-gitlab/vtest/vtest_server.c:105
#6 0x7fe313919ac9 in __libc_start_main (/lib64/libc.so.6+0x21ac9)
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
vrend_debug.h is not installed but we need the typedef for the debug
callback.
Fixes: 70fefe33df
virgl: expose function to set output callback
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Fixes the mem leak:
Direct leak of 8 byte(s) in 1 object(s) allocated from:
#0 0x7f49a7733c60 in realloc (/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0/libasan.so+0xdbc60)
#1 0x7f49a713100a in add_sampler_array ../../../../virgl-gitlab/src/vrend_shader.c:619
#2 0x7f49a71318cb in add_samplers ../../../../virgl-gitlab/src/vrend_shader.c:677
#3 0x7f49a713a780 in iter_declaration ../../../../virgl-gitlab/src/vrend_shader.c:1213
#4 0x7f49a7194c37 in tgsi_iterate_shader ../../../../../../virgl-gitlab/src/gallium/auxiliary/tgsi/tgsi_iterate.c:59
#5 0x7f49a7169a24 in vrend_convert_shader ../../../../virgl-gitlab/src/vrend_shader.c:5012
Closes: #85
[airlied: v2: free image arrays as well]
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This is helpful to get the name of the guest program that may trigger a
memory leak. One can also pass a custom string as program name by setting
the environment variable GALLIUM_PROCESS_NAME in the guest accordingly.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Since this adds a new function to the library interface this also needs
a bump in the library version number.
Closes: #80
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: David Riley <davidriley@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This way all output originating from virglrenderer will be redirected.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: David Riley <davidriley@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This patch adds the infrastructure and replaces the debug calls to fprintf
by calls to vrend_printf that internally may be redirected.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: David Riley <davidriley@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This is needed for guest GL >= 3.0 on GLES.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: <Gurchetan Singh gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
We need to dirty the compute shader if we bind a new non-compute program,
this fixes a bug in the qbo tests when qbo is merged.
Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
emit_ios handles all the shader types so that it is difficult to
follow what is emitted for which shader type. Start refactoring by
moving the common initialization into a separate function.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
There's no point in keeping updating all the constant buffers for every
draw; we only need to update those who has changed since last draw.
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
This allows us to allocate UBO ids based on the linked result, rather
than the currently bound UBOs. This gives us a per-program stable
result, which means we don't need to keep updating them.
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
We already track samplers, images and ssbos using bitmasks, so this is a
bit more familiar to the rest of the code.
Also, this is going to enable some other nifty optimizations later on.
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
To try this out, start a run like using multiple `--test`
arguments.
ci/run_test_suite.sh \
--deqp \
--host-gles \
--backend vtest-gpu \
--backend gpu \
--test TEST1 \
--test TEST2
Signed-off-by: Robert Foss <robert.foss@collabora.com>
This patch cleans up the CI path handling, and
allows for external path variables to be used.
Environment variables are now respected for MESA_PATH,
VIRGL_PATH and CTS_PATH.
Additionally these variables can be picked up from a
config file `~/.virgl-ci.conf`
$ cat ~/.virgl-ci.conf
MESA_PATH=/opt/virgl/mesa
VIRGL_PATH=/opt/virgl/virglrenderer
Or given as a local environment variable like below.
CTS_PATH=/opt/virgl/ ci/run_test_suite.sh --piglit --gles3 --backend softpipe
Signed-off-by: Robert Foss <robert.foss@collabora.com>
gdc-6 is currently not in testing and gdc will pull in the default version
(currently gdc-8) which should work.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
This fixes build failures with musl C library
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
No functional change other then better option parsing.
Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
This reason for wanting to split them up is just to
provide a faster overview of what is failing and
what isn't.
This may be a small amount slower than running them
together, but the impact should be low.
Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Robert Foss <robert.foss@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>