virgl: add offset alignment values to to v2 caps struct
authorgurchetansingh@chromium.org <gurchetansingh@chromium.org>
Fri, 23 Feb 2018 02:02:18 +0000 (18:02 -0800)
committerDave Airlie <airlied@redhat.com>
Mon, 5 Mar 2018 03:29:39 +0000 (13:29 +1000)
commitfe0647df5a70a4954d9399f0860a12ff691a88ee
tree3ae3ba13740ca4cdf64794bf0a136ab1331f26f5
parent9283cf2ad19b0eacc20b9aa5984bac077e9c475c
virgl: add offset alignment values to to v2 caps struct

glBindBufferRange(..) in vrend_draw_bind_ubo is failing with
more than one uniform block. This is due to improper alignment
of the start of the second block. Let's query the proper
alignment from the driver and pass it back to Mesa.

Let's query for the texture alignment too, even though the Virgl
renderer doesn't call glTexBufferRange yet.

The default values are the widest workable range possible (for example,
GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT on Nvidia is 256).

Fixes:
dEQP-GLES3.functional.ubo.* on Nvidia

Example test:
dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer.shared_vertex

Note: This is based on "virgl: reduce some default capset limits.",
which hasn't landed in Mesa yet but should relatively soon.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/virgl/virgl_hw.h
src/gallium/drivers/virgl/virgl_screen.c
src/gallium/drivers/virgl/virgl_winsys.h