dri: Change __DriverApiRec::CreateContext to take a struct for attribs
authorNeil Roberts <neil@linux.intel.com>
Wed, 1 Oct 2014 19:00:46 +0000 (20:00 +0100)
committerAdam Jackson <ajax@redhat.com>
Mon, 6 Nov 2017 21:09:02 +0000 (16:09 -0500)
commit6d87500fe12e77ad13db057430964b864cacb055
treeace32137fad6b6ed17de33d7c1566b31263598d2
parent8c0729fd99c8548ceaf40e273b809ce0a69d8a44
dri: Change __DriverApiRec::CreateContext to take a struct for attribs

Previously the CreateContext method of __DriverApiRec took a set of
arguments to describe the attribute values from the window system API's
CreateContextAttribs function. As more attributes get added this could
quickly get unworkable and every new attribute needs a modification for
every driver.

To fix that, pass the attribute values in a struct instead.  The struct
has a bitmask to specify which members are used. The first three members
(two for the GL version and one for the flags) are always set. If the
bit is not set in the attribute mask then it can be assumed the
attribute has the default value. Drivers will error if unknown bits in
the mask are set.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Neil Roberts <neil@linux.intel.com>
14 files changed:
src/gallium/state_trackers/dri/dri_context.c
src/gallium/state_trackers/dri/dri_context.h
src/mesa/drivers/dri/common/dri_util.c
src/mesa/drivers/dri/common/dri_util.h
src/mesa/drivers/dri/i915/intel_screen.c
src/mesa/drivers/dri/i965/brw_context.c
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/nouveau/nouveau_context.c
src/mesa/drivers/dri/nouveau/nouveau_context.h
src/mesa/drivers/dri/r200/r200_context.c
src/mesa/drivers/dri/r200/r200_context.h
src/mesa/drivers/dri/radeon/radeon_context.c
src/mesa/drivers/dri/radeon/radeon_context.h
src/mesa/drivers/dri/swrast/swrast.c