wined3d_private_types.h revision af062818b47340eef15700d2f0211576ba3506ee
af062818b47340eef15700d2f0211576ba3506eevboxsync * Direct3D wine internal header: D3D equivalent types
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright 2002-2003 Jason Edmeades
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright 2002-2003 Raphael Junqueira
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright 2005 Oliver Stieber
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is free software; you can redistribute it and/or
af062818b47340eef15700d2f0211576ba3506eevboxsync * modify it under the terms of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License as published by the Free Software Foundation; either
af062818b47340eef15700d2f0211576ba3506eevboxsync * version 2.1 of the License, or (at your option) any later version.
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is distributed in the hope that it will be useful,
af062818b47340eef15700d2f0211576ba3506eevboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
af062818b47340eef15700d2f0211576ba3506eevboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync * Lesser General Public License for more details.
af062818b47340eef15700d2f0211576ba3506eevboxsync * You should have received a copy of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License along with this library; if not, write to the Free Software
af062818b47340eef15700d2f0211576ba3506eevboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
af062818b47340eef15700d2f0211576ba3506eevboxsync/* WineD3D pixel format flags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING 0x1
af062818b47340eef15700d2f0211576ba3506eevboxsync/** DCL usage masks **/
af062818b47340eef15700d2f0211576ba3506eevboxsync/** DCL sampler texture type **/
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSTT_UNKNOWN = 0 << WINED3DSP_TEXTURETYPE_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSTT_CUBE = 3 << WINED3DSP_TEXTURETYPE_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSTT_VOLUME = 4 << WINED3DSP_TEXTURETYPE_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Register number mask **/
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Register type masks **/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSP_REGTYPE_MASK (0x7 << WINED3DSP_REGTYPE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Register types **/
af062818b47340eef15700d2f0211576ba3506eevboxsync/* RASTOUT register offsets */
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Source register modifiers **/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_SWIZZLE_MASK (0xFF << WINED3DVS_SWIZZLE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSP_SWIZZLE_MASK (0xFF << WINED3DSP_SWIZZLE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_X_X (0 << WINED3DVS_SWIZZLE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_X_Y (1 << WINED3DVS_SWIZZLE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_X_Z (2 << WINED3DVS_SWIZZLE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_X_W (3 << WINED3DVS_SWIZZLE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Y_X (0 << (WINED3DVS_SWIZZLE_SHIFT + 2))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Y_Y (1 << (WINED3DVS_SWIZZLE_SHIFT + 2))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Y_Z (2 << (WINED3DVS_SWIZZLE_SHIFT + 2))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Y_W (3 << (WINED3DVS_SWIZZLE_SHIFT + 2))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Z_X (0 << (WINED3DVS_SWIZZLE_SHIFT + 4))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Z_Y (1 << (WINED3DVS_SWIZZLE_SHIFT + 4))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Z_Z (2 << (WINED3DVS_SWIZZLE_SHIFT + 4))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_Z_W (3 << (WINED3DVS_SWIZZLE_SHIFT + 4))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_W_X (0 << (WINED3DVS_SWIZZLE_SHIFT + 6))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_W_Y (1 << (WINED3DVS_SWIZZLE_SHIFT + 6))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_W_Z (2 << (WINED3DVS_SWIZZLE_SHIFT + 6))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_W_W (3 << (WINED3DVS_SWIZZLE_SHIFT + 6))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_NOSWIZZLE (WINED3DVS_X_X | WINED3DVS_Y_Y | WINED3DVS_Z_Z | WINED3DVS_W_W)
af062818b47340eef15700d2f0211576ba3506eevboxsync ((0 << (WINED3DSP_SWIZZLE_SHIFT + 0)) | (1 << (WINED3DSP_SWIZZLE_SHIFT + 2)) | \
af062818b47340eef15700d2f0211576ba3506eevboxsync (2 << (WINED3DSP_SWIZZLE_SHIFT + 4)) | (3 << (WINED3DSP_SWIZZLE_SHIFT + 6)))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSP_SRCMOD_MASK (0xF << WINED3DSP_SRCMOD_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Destination register modifiers **/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSP_WRITEMASK_ALL 0x000F0000 /* all */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSP_DSTMOD_MASK (0xF << WINED3DSP_DSTMOD_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSPDM_SATURATE = 1 << WINED3DSP_DSTMOD_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSPDM_PARTIALPRECISION = 2 << WINED3DSP_DSTMOD_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSPDM_MSAMPCENTROID = 4 << WINED3DSP_DSTMOD_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSP_DSTSHIFT_MASK (0xF << WINED3DSP_DSTSHIFT_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Register addressing modes **/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSHADER_ADDRESSMODE_MASK (1 << WINED3DSHADER_ADDRESSMODE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSHADER_ADDRMODE_ABSOLUTE = 0 << WINED3DSHADER_ADDRESSMODE_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSHADER_ADDRMODE_RELATIVE = 1 << WINED3DSHADER_ADDRESSMODE_SHIFT,
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Opcode types */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _WINED3DSHADER_INSTRUCTION_OPCODE_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync WINED3DSIO_FORCE_DWORD = 0X7FFFFFFF /** for 32-bit alignment */
af062818b47340eef15700d2f0211576ba3506eevboxsync/** opcode-related masks **/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSI_COMMENTSIZE_MASK (0x7FFF << WINED3DSI_COMMENTSIZE_SHIFT)
af062818b47340eef15700d2f0211576ba3506eevboxsync ((((commentSize) << WINED3DSI_COMMENTSIZE_SHIFT) & WINED3DSI_COMMENTSIZE_MASK) | WINED3DSIO_COMMENT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSHADER_INSTRUCTION_PREDICATED (1 << 28)
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Undocumented opcode control to identify projective texture lookups in ps 2.0 and later */
af062818b47340eef15700d2f0211576ba3506eevboxsync/** Shader version tokens, and shader end tokens **/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WINED3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Multithreaded flag. Removed from the public header to signal that IWineD3D::CreateDevice ignores it */