added more engine command defines.. 8-)

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10519 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen 2004-12-23 12:54:35 +00:00
parent 00742759be
commit 0e0eb256d8
2 changed files with 109 additions and 25 deletions

View File

@ -73,24 +73,24 @@ enum {
};
/* handles to pre-defined engine commands */
#define NV_ROP5_SOLID 0x80000000
#define NV_IMAGE_BLACK_RECTANGLE 0x80000001
#define NV_IMAGE_PATTERN 0x80000002
#define NV3_SURFACE_0 0x80000003
#define NV3_SURFACE_1 0x80000004
#define NV3_SURFACE_2 0x80000005
#define NV3_SURFACE_3 0x80000006
//#define NV4_CONTEXT_SURFACES_ARGB_ZS 0x80000007
#define NV10_CONTEXT_SURFACES_ARGB_ZS 0x80000007
#define NV1_IMAGE_FROM_CPU 0x80000010
#define NV_IMAGE_BLIT 0x80000011
#define NV3_GDI_RECTANGLE_TEXT 0x80000012
#define NV_RENDER_D3D0_TRIANGLE_ZETA 0x80000013
#define NV4_DX5_TEXTURE_TRIANGLE 0x80000014
#define NV10_DX5_TEXTURE_TRIANGLE 0x80000014
#define NV4_DX6_MULTI_TEXTURE_TRIANGLE 0x80000015
#define NV10_DX6_MULTI_TEXTURE_TRIANGLE 0x80000015
#define NV1_RENDER_SOLID_LIN 0x80000016
#define NV_ROP5_SOLID 0x80000000 /* 2D */
#define NV_IMAGE_BLACK_RECTANGLE 0x80000001 /* 2D/3D */
#define NV_IMAGE_PATTERN 0x80000002 /* 2D */
#define NV3_SURFACE_0 0x80000003 /* 3D: old cmd */
#define NV3_SURFACE_1 0x80000004 /* 3D: old cmd */
#define NV3_SURFACE_2 0x80000005 /* 3D: old cmd */
#define NV3_SURFACE_3 0x80000006 /* 3D: old cmd */
#define NV4_CONTEXT_SURFACES_ARGB_ZS 0x80000007 /* 3D: should replace the old cmd's */
#define NV10_CONTEXT_SURFACES_ARGB_ZS 0x80000007 /* 3D: should replace the old cmd's */
#define NV1_IMAGE_FROM_CPU 0x80000010 /* 2D: unused, remove? */
#define NV_IMAGE_BLIT 0x80000011 /* 2D */
#define NV3_GDI_RECTANGLE_TEXT 0x80000012 /* 2D */
#define NV_RENDER_D3D0_TRIANGLE_ZETA 0x80000013 /* unused (yet?) */
#define NV4_DX5_TEXTURE_TRIANGLE 0x80000014 /* 3D */
#define NV10_DX5_TEXTURE_TRIANGLE 0x80000014 /* 3D */
#define NV4_DX6_MULTI_TEXTURE_TRIANGLE 0x80000015 /* unused (yet?) */
#define NV10_DX6_MULTI_TEXTURE_TRIANGLE 0x80000015 /* unused (yet?) */
#define NV1_RENDER_SOLID_LIN 0x80000016 /* 2D: unused */
/* max. number of overlay buffers */
#define MAXBUFFERS 3

View File

@ -56,7 +56,10 @@ typedef struct {
uint32 LeftTop; /* b0-15 is top, b16-31 is left */
uint32 WidthHeight; /* b0-15 is height, b16-31 is width */
} UnclippedRectangle[0x40]; /* command can handle upto 64 unclipped rects */
//XFree also defines: (not used AFAIK ATM)
/* fixme: XFree also defines the registers below:
* (used for the 2D 'ScanlineCPUToScreenColorExpandFill' and 'ColorExpandScanline'
* functions.)
* We don't use this currently. */
/*
U032 reserved04[(0x080)-3];
struct
@ -106,6 +109,68 @@ typedef struct {
*/
} cmd_nv3_gdi_rectangle_text;
/* This command could (at least) potentially speed-up our fill_span command... :-) */
//fixme: test this 2D command!
typedef struct {
uint32 reserved00[0x0004];
uint16 FifoFree; /* little endian (FIFO internal register) */
uint16 Nop; /* little endian (FIFO internal register) */
uint32 reserved01[0x00bc]; /* fixme? there's more here that's not used apparantly */
uint32 Color; /* b0-31 is color */
uint32 reserved02[0x003e];
struct {
uint32 Point0; /* b0-15 is X, b16-31 is Y: starting coordinate */
uint32 Point1; /* b0-15 is X, b16-31 is Y: ending coordinate */
} Line[0x10]; /* command can handle upto 16 lines */
struct {
uint32 Point0X; /* b0-31 is X: starting coordinate */
uint32 Point0Y; /* b0-31 is Y: starting coordinate */
uint32 Point1X; /* b0-31 is X: ending coordinate */
uint32 Point1Y; /* b0-31 is Y: ending coordinate */
} Line32[0x08]; /* cmd can handle upto 8 lines with 32-bit coordinates */
struct {
uint32 Point; /* b0-15 is X, b16-31 is Y */
} Polyline[0x20]; /* cmd can handle upto 32 polylines */
struct {
uint32 PointX; /* b0-31 is X */
uint32 PointY; /* b0-31 is Y */
} Polyline32[0x10]; /* command can handle upto 16 polylines with 32-bit coord's */
struct {
uint32 Color; /* b0-31 is color */
uint32 Point; /* b0-15 is X, b16-31 is Y */
} ColorPolyline[0x10]; /* cmd can handle upto 16 individually colored polylines */
} cmd_nv1_render_solid_lin;
/* Someone defined this in XFree once (as 'RivaRectangle') but never used it:
* a handle should also be defined in the engine's init code, which was never done AFAIK.
* The command could be very interesting for us, as it could potentially speed-up our
* rectangle_fills :-) */
//fixme: test this 2D command!
typedef struct {
uint32 reserved00[0x0004];
uint16 FifoFree; /* little endian (FIFO internal register) */
uint16 Nop; /* little endian (FIFO internal register) */
uint32 reserved01[0x00bc]; /* fixme? there's more here that's not used apparantly */
uint32 Color; /* b0-31 is color */
uint32 reserved02[0x003e];
struct {
uint32 TopLeft; /* b0-15 is left, b16-31 is top */
uint32 HeightWidth; /* b0-15 is width, b16-31 is height */
} Rectangle[0x10]; /* command can handle upto 16 rectangles */
} cmd_nv_render_solid_rectangle;/* nv1_render_solid_rectangle is identical */
//fixme: complete or remove (this 2D cmd is not used currently)
typedef struct {
} cmd_nv1_image_from_cpu; /* 'pixmap': used in XFree 4.2.0, but not beyond.
* (Used for the 2D 'ImageWriteScanline' and
* 'ScanlineImageWriteRect' functions.)
* Is this command actually usefull? */
/************************
* 3D specific commands *
************************/
typedef struct {
uint32 reserved00[0x0004];
uint16 FifoFree; /* little endian (FIFO internal register) */
@ -120,14 +185,14 @@ typedef struct {
uint32 FogColor; /* fog colorvalue */
uint32 reserved02[0x0039];
struct {
uint32 ScreenX; /* X */
uint32 ScreenY; /* Y */
uint32 ScreenZ; /* depth */
uint32 RWH; /* eyeM */
float ScreenX; /* X */
float ScreenY; /* Y */
float ScreenZ; /* depth */
float RWH; /* eyeM */
uint32 Color; /* b24-31 Alpha, b16-23 Red, b8-15 Green, b0-7 Blue */
uint32 Specular; /* b24-31 Fog, b16-23 Red, b8-15 Green, b0-7 Blue */
uint32 TU; /* texture S */
uint32 TV; /* texture T */
float TU; /* texture S */
float TV; /* texture T */
} TLVertex[0x10]; /* command can handle upto 16 textured, lit(?) vertexes */
uint32 TLVDrawPrim[0x40]; /* b20-31 is I5, b16-19 is I4, b12-15 is I3,
* b8-11 is I2, 4-7 is I1, b0-3 is I0:
@ -150,4 +215,23 @@ typedef struct {
uint32 SetOffsetZeta; /* b0-31 is Z-buffer (zeta buffer) offset */
} cmd_nv4_context_surfaces_argb_zs; /* nv10_context_surfaces_argb_zs is identical */
//fixme: let's loose this one if possible as we don't support NV3 anyway ...
// (checkout if we can re-setup 2D surfaces (after using 3D) without this command)
typedef struct {
uint32 reserved00[0x0004];
uint16 FifoFree; /* little endian (FIFO internal register) */
uint16 Nop; /* little endian (FIFO internal register) */
uint32 reserved01[0x00bd]; /* fixme? there's more here that's not used apparantly */
uint32 Pitch; /* b0-15 is buffer pitch */
uint32 SetOffset; /* b0-22 is buffer offset (so just 1st 8Mb adressable!) */
} cmd_nv3_surface_x; /* x = 0, 1, 2 or 3: selects buffer to be setup;
* 0,1 is 2D surfaces, 2,3 is 3D surfaces */
//fixme: fill these out...
typedef struct {
} cmd_nv_render_d3d0_triangle_zeta;
typedef struct {
} cmd_nv4_dx6_multi_texture_triangle;/* nv10_dx6_multi_texture_triangle is identical? */
#endif