#ifndef NV_3DDEFS_XML
#define NV_3DDEFS_XML

/* Autogenerated file, DO NOT EDIT manually!

This file was generated by the rules-ng-ng headergen tool in this git repository:
http://0x04.net/cgit/index.cgi/rules-ng-ng
git clone git://0x04.net/rules-ng-ng

The rules-ng-ng source files this header was generated from are:
- nvc0_3d.xml    (  26312 bytes, from 2010-10-08 10:10:01)
- copyright.xml  (   6498 bytes, from 2010-10-03 13:18:37)
- nv_defs.xml    (   4437 bytes, from 2010-07-06 07:43:58)
- nv_3ddefs.xml  (  16397 bytes, from 2010-10-08 13:30:38)
- nv_object.xml  (  11249 bytes, from 2010-10-07 15:31:28)
- nvchipsets.xml (   2824 bytes, from 2010-07-07 13:41:20)
- nv50_defs.xml  (   4482 bytes, from 2010-10-03 13:18:37)

Copyright (C) 2006-2010 by the following authors:
- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
- Ben Skeggs (darktama, darktama_)
- B. R. <koala_br@users.sourceforge.net> (koala_br)
- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
- Dmitry Baryshkov
- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
- EdB <edb_@users.sf.net> (edb_)
- Erik Waling <erikwailing@users.sf.net> (erikwaling)
- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
- imirkin <imirkin@users.sf.net> (imirkin)
- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
- Mark Carey <mark.carey@gmail.com> (careym)
- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
- Peter Popov <ironpeter@users.sf.net> (ironpeter)
- Richard Hughes <hughsient@users.sf.net> (hughsient)
- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
- Serge Martin
- Simon Raffeiner
- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
- sturmflut <sturmflut@users.sf.net> (sturmflut)
- Sylvain Munaut <tnt@246tNt.com>
- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
- Younes Manton <younes.m@gmail.com> (ymanton)

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice (including the
next paragraph) shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/


#define NV50_3D_BLEND_FACTOR_ZERO				0x00004000
#define NV50_3D_BLEND_FACTOR_ONE				0x00004001
#define NV50_3D_BLEND_FACTOR_SRC_COLOR				0x00004300
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_SRC_COLOR		0x00004301
#define NV50_3D_BLEND_FACTOR_SRC_ALPHA				0x00004302
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA		0x00004303
#define NV50_3D_BLEND_FACTOR_DST_ALPHA				0x00004304
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_DST_ALPHA		0x00004305
#define NV50_3D_BLEND_FACTOR_DST_COLOR				0x00004306
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_DST_COLOR		0x00004307
#define NV50_3D_BLEND_FACTOR_SRC_ALPHA_SATURATE			0x00004308
#define NV50_3D_BLEND_FACTOR_CONSTANT_COLOR			0x0000c001
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR		0x0000c002
#define NV50_3D_BLEND_FACTOR_CONSTANT_ALPHA			0x0000c003
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA		0x0000c004
#define NV50_3D_BLEND_FACTOR_SRC1_COLOR				0x0000c900
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR		0x0000c901
#define NV50_3D_BLEND_FACTOR_SRC1_ALPHA				0x0000c902
#define NV50_3D_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA		0x0000c903

#endif /* NV_3DDEFS_XML */
