[ -z "${OPENGL}" ] && OPENGL="no"
[ -z "${OPENGLES}" ] && OPENGLES="no"
[ -z "${VULKAN}" ] && VULKAN="no"

if [ "${OPENGL}" = "no" ]; then
  OPENGL_SUPPORT="no"
else
  OPENGL_SUPPORT="yes"
fi

if [ "${OPENGLES}" = "no" ]; then
  OPENGLES_SUPPORT="no"
else
  OPENGLES_SUPPORT="yes"
fi

if [ "${VULKAN}" = "no" ]; then
  VULKAN_SUPPORT="no"
else
  VULKAN_SUPPORT="yes"
fi

get_graphicdrivers() {

  # set defaults
  GALLIUM_DRIVERS=""
  XORG_DRIVERS=""
  VULKAN_DRIVERS_CONFIG=""
  VULKAN_DRIVERS_MESA=""
  LLVM_SUPPORT="no"
  COMPOSITE_SUPPORT="no"
  VDPAU_SUPPORT="no"
  VAAPI_SUPPORT="no"
  V4L2_SUPPORT="no"

  if [ "${GRAPHIC_DRIVERS}" = "all" ]; then
    GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-ng vmware virtio vc4"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then
    GALLIUM_DRIVERS+=" crocus"
    XORG_DRIVERS+=" intel"
    COMPOSITE_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "etnaviv"; then
    GALLIUM_DRIVERS+=" etnaviv"
    V4L2_SUPPORT="yes"
    VAAPI_SUPPORT="no"
    VDPAU_SUPPORT="no"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "freedreno"; then
    GALLIUM_DRIVERS+=" freedreno"
    V4L2_SUPPORT="yes"
    VAAPI_SUPPORT="no"
    VDPAU_SUPPORT="no"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "i915"; then
    GALLIUM_DRIVERS+=" i915"
    XORG_DRIVERS+=" intel"
    COMPOSITE_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "iris"; then
    GALLIUM_DRIVERS+=" iris"
    XORG_DRIVERS+=" intel"
    VULKAN_DRIVERS_MESA+=" intel"
    COMPOSITE_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "lima"; then
    GALLIUM_DRIVERS+=" lima"
    V4L2_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "nvidia"; then
    XORG_DRIVERS+=" nvidia"
    VULKAN_DRIVERS_CONFIG+=" nvidia"
    VDPAU_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then
    VULKAN_DRIVERS_CONFIG+=" nvidia-ng"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "panfrost"; then
    GALLIUM_DRIVERS+=" panfrost"
    VULKAN_DRIVERS_MESA+=" panfrost"
    V4L2_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "r300"; then
    GALLIUM_DRIVERS+=" r300"
    LLVM_SUPPORT="yes"
    COMPOSITE_SUPPORT="yes"
    VDPAU_SUPPORT="no"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "r600"; then
    GALLIUM_DRIVERS+=" r600"
    LLVM_SUPPORT="yes"
    COMPOSITE_SUPPORT="yes"
    VDPAU_SUPPORT="no"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "radeonsi"; then
    GALLIUM_DRIVERS+=" radeonsi"
    XORG_DRIVERS+=" amdgpu"
    VULKAN_DRIVERS_MESA+=" amd"
    LLVM_SUPPORT="yes"
    COMPOSITE_SUPPORT="yes"
    VDPAU_SUPPORT="yes"
    VAAPI_SUPPORT="yes"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "vc4"; then
    GALLIUM_DRIVERS+=" vc4 v3d"
    VULKAN_DRIVERS_MESA+=" broadcom"
    V4L2_SUPPORT="yes"
    VAAPI_SUPPORT="no"
    VDPAU_SUPPORT="no"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "virtio"; then
    GALLIUM_DRIVERS+=" virgl"
  fi

  if listcontains "${GRAPHIC_DRIVERS}" "vmware"; then
    GALLIUM_DRIVERS+=" svga"
    XORG_DRIVERS+=" vmware"
    COMPOSITE_SUPPORT="yes"
  fi

  # VDPAU Support depends on X11
  if [ ! "${DISPLAYSERVER}" = "x11" ]; then
    VDPAU_SUPPORT="no"
  fi

  # remove duplicate entries
  GALLIUM_DRIVERS="$(echo ${GALLIUM_DRIVERS} | xargs -n1 | sort -u | xargs)"
  GRAPHIC_DRIVERS="$(echo ${GRAPHIC_DRIVERS} | xargs -n1 | sort -u | xargs)"
  XORG_DRIVERS="$(echo ${XORG_DRIVERS} | xargs -n1 | sort -u | xargs)"
  VULKAN_DRIVERS_MESA="$(echo ${VULKAN_DRIVERS_MESA} | xargs -n1 | sort -u | xargs)"
  VULKAN_DRIVERS_CONFIG+=" ${VULKAN_DRIVERS_MESA}"
  VULKAN_DRIVERS_CONFIG="$(echo ${VULKAN_DRIVERS_CONFIG} | xargs -n1 | sort -u | xargs)"
}
