summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/nouveau/nouveau_shader.h
diff options
context:
space:
mode:
authorBen Skeggs <darktama@iinet.net.au>2007-01-25 13:40:51 +1100
committerBen Skeggs <darktama@iinet.net.au>2007-01-25 13:40:51 +1100
commit86996dfe32fccd5777dd0e410b5dbe964fb206d1 (patch)
treee3852a447677b2158a0c0964260bae2de7941286 /src/mesa/drivers/dri/nouveau/nouveau_shader.h
parent2d7687865e8831e365756f1270c03ee70298ba4c (diff)
nouveau: add result scaling to shader backend, use it in RSQ emul for NV40.
Diffstat (limited to 'src/mesa/drivers/dri/nouveau/nouveau_shader.h')
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_shader.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_shader.h b/src/mesa/drivers/dri/nouveau/nouveau_shader.h
index 8b4be9dfe7c..7329ccd9ead 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_shader.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_shader.h
@@ -194,6 +194,16 @@ typedef enum {
NVS_TEX_TARGET_UNKNOWN = 0
} nvsTexTarget;
+typedef enum {
+ NVS_SCALE_1X = 0,
+ NVS_SCALE_2X = 1,
+ NVS_SCALE_4X = 2,
+ NVS_SCALE_8X = 3,
+ NVS_SCALE_INV_2X = 5,
+ NVS_SCALE_INV_4X = 6,
+ NVS_SCALE_INV_8X = 7,
+} nvsScale;
+
/* Arith/TEX instructions */
typedef struct nvs_instruction {
nvsFragmentHeader header;
@@ -203,6 +213,7 @@ typedef struct nvs_instruction {
nvsRegister dest;
unsigned int mask;
+ nvsScale dest_scale;
nvsRegister src[3];
@@ -307,6 +318,7 @@ struct _nvsFunc {
void (*InitInstruction) (nvsFunc *);
int (*SupportsOpcode) (nvsFunc *, nvsOpcode);
+ int (*SupportsResultScale) (nvsFunc *, nvsScale);
void (*SetOpcode) (nvsFunc *, unsigned int opcode,
int slot);
void (*SetCCUpdate) (nvsFunc *);
@@ -314,6 +326,7 @@ struct _nvsFunc {
nvsSwzComp *swizzle);
void (*SetResult) (nvsFunc *, nvsRegister *,
unsigned int mask, int slot);
+ void (*SetResultScale) (nvsFunc *, nvsScale);
void (*SetSource) (nvsFunc *, nvsRegister *, int pos);
void (*SetTexImageUnit) (nvsFunc *, int unit);
void (*SetSaturate) (nvsFunc *);