# This is the official list of SwiftShader authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.
# Names should be added to this file as:
# Name or Organization <email address>
# The email address is not required for organizations.

Google Inc.
The ANGLE Project Authors <angleproject@googlegroups.com>