Also add OES_sample_shading to the test.
Fixes:
dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16i_rgba16f
dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32i_rgba32f
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_r32f
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16ui_rgba16f
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_r32f
Enabled (with some failures):
dEQP-GLES31.functional.debug.negative_coverage.*
dEQP-GLES31.functional.sample_shading.* (with some failures)
dEQP-GLES31.functional.shaders.sample_variables.*
dEQP-GLES31.functional.shaders.multisample_interpolation.*
Closes: #3
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
OES_geometry_shader and ARB_gpu_shader5 are enabled by gallium (also)
based on the GLSL level, but nothing else seems to be dependend on this
specific value, so set it. This also make the check for feat_tessellation
for enabling PIPE_PRIM_PATCH redundant.
Enables amonst others:
dEQP-GLES31.functional.texture.gather.offsets.*
dEQP-GLES31.functional.tessellation*
dEQP-GLES31.functional.geometry_shading.*
dEQP-GLES31.functional.shaders.opaque_type_indexing.*
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Consequently calling glGetIntegerv with GL_MAX_IMAGE_SAMPLES would results
in an error state on GLES that is not cleaned up and this has
consequences for the following processing.
Closes: #28
Fixes: 950de33c32
renderer: add image support. (v4)
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This way we can report the actual max texture, rather than a
conservative guess like we do now.
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>
OpenGL ES 3.1 doesn't support using glUniform1i() for binding
images, so let's use layout qualifiers instead. This should in
theory be slightly more performant as well, as we do less API
calls.
A future improvement would be to also do this on GL 4.2 and later
as well.
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>
glTexBuffer doesn't accept GL_RGBA8_SNORM, so use GL_RGBA8UI
instead. Unfortunately, we can't use our texture table since
Gallium requests PIPE_FORMAT_R8_UNORM for texture buffers. For
normal sampler views, the correct semantics are passed down later,
but for images (where texture and image formats can differ) this
is not case.
Fixes:
dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret.rgba8ui_rgba8_snorm
dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret.r32ui_rgba8_snorm
dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret.rgba8i_rgba8_snorm
dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret.rgba8_rgba8_snorm
Reviewed-by: Elie Tournier <elie.tournier@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
Add a check for nonterminated string passed into the create_shader
code.
No point checking len <= 0, since it's a uint32_t.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Gallium copy_image redirects calls to resource_copy_region for equal src
and dst formats or if at least one of the two is compressed. Handle the
condition for selecting blit vs. glCopyImageSubRegion accordingly.
Fixes piglit: bptc-float-modes
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This adds the texture barrier support for the texture barriers,
a separate patch would be needed to implement the framebuffer fetch
barriers.
Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
Based on the website, glTexStorage2DMultisample requires at least
opengles >= 31 and opengl >= 43 or the extension.
Adding the check here.
v2: rebased using the features.
Signed-off-by: Dave Airlie <airlied@redhat.com>
This is needed to make tests/test_virgl_cmd pass
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
The extension is also provied by GL 4.0 and GLES 3.1.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
glTexStorage*D is more restrictive in supporting texture formats, especially
on GLES. Specifically, it doesn't support BGRA textures that are needed to get
any useful display, but it is needed to get immutable textures that are required
for glTextureView.
Check which formats are supported and use glTexStorage*D for these, otherwise
fall back to use glTexImage*D.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This was bogus from the beginning.
Fixes: c0e0274e8c
virgl: Add method to query supported MSAA samples and positions
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
In certain cases, specifying level and layer for TBOs causes
tests to fail. Don't do this.
Fixes:
dEQP-GLES31.functional.image_load_store.buffer.image_size.writeonly_12
dEQP-GLES31.functional.image_load_store.buffer.image_size.writeonly_1
dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_writeonly_12
dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_writeonly_1
dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_12
dEQP-GLES31.functional.image_load_store.buffer.image_size.readonly_1
Signed-off-by: Dave Airlie <airlied@redhat.com>
Move all v2 caps into the caps_v2 function that also gets renamed.
Protect the GL only value queries by using the according gl_ver test.
(Part two of cleanup suggested by Gurchetan)
v4: rebase after image support and compute shader patches landed
v5: use basic check for GL for GL_SMOOTH_*_SIZE_RANGE (Erik)
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> (v3)
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
Also rename the function caps_common to indicated that only v1 caps are
set here.
(This is part one of the cleanup suggested by Gurchetan)
v4: rebase after image and compute shader patches landed
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> (v3)
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
Also move the function code up in the file to let the code reflect the
call logic.
v4: rebase after image and computer shader patches landed
v5: take changes in previous patch into account
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> (v3)
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
Since the gles code path is now reduced to just setting the gles
version, move all the glsl stuff into one place.
v3: remove now unused parameter gl_ver
v4: rebase after image and compute shader patches landed
v5: rework logic a bit taking Eriks suggestion into account
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> (v3)
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
Use the new cap code path for setting it on GLES
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
v2: Move some common version 2 caps into new function (Dave pointed
out there were some in common without checking the caps version)
v5: also fill common caps v2 from gles (Erik)
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
On an GL host set the sRGB blit framebuffer state explicitly to make virgl
behave like on a GLES host.
This does not correct the handing of sRGB completely, because the state
GL_FRAMEBUFFER_SRGB is not properly transmitted to the host. As a result
the piglits "blit texture linear_to_srgb * * *" flip.
Tests thatset "enable" failed before and pass now, and tests that set "disable"
now fail.
v2: - Move setting the fbo state out of the loop (Robert Tarasov)
- Use the blitter context to set and store the state, since it is only,
and currently we don't pass the state from the guest
relevant when the dst texture is SRGB, there is no need to disable it
- Just enforce that a source SRGB texture is always decoded when this could
be disabled
Fixes on GL host:
dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_srgb8_alpha8
dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8
Reviewed-by: Robert Tarasov <tutankhamen@chromium.org>
Tested-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Tested-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
This seems to be quite common, but we should still test for its
availability because it doesn't seem to be part of any standard.
Reviewed-by: Robert Tarasov <tutankhamen@chromium.org>
Tested-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Tested-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
This requires adding new protocol to pass the width/height/layers/sample
default values from the host.
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Add a capability and some queries to expose compute shaders
to the host.
v2: expose more limits, check feature on launch grid
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
For compute shaders we put the req local memory into the streamout
places in the protocol, and we create compute shaders in a separate
lookup function
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
This mostly consists of adding local memory support, and
support for the compute system values.
The req_local_mem need to be gotten from the guest side
and passed into the shader compile so we can size the
shared memory correctly.
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
This fixes somes bugs in the existing code and
refactors the sampler array support to more closely
follow the image array code.
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
GL4.2/GLES3.1 adds glMemoryBarrier so make sure we can handle it.
v2: add a cap bit for this for guest
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
This adds support for tracking images, and binding them
to the GL context.
includes:
vrend_renderer: create texture when TBO is used as image
vrend_renderer: specify correct access to glBindImageTexture
v2:
vrend_renderer: invert glBindImageTexture layered logic
v3: fix decode macros (Gert pointed out for ssbo)
v4: add max image samples to the caps.
add image arrays.
use mask var outside loop (Gert)
change img_locs type to GLint and printf on fail (Gert)
Co-authors: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>