tgsi: Add condition code (CC) register.

This commit is contained in:
Michal Krol 2008-08-18 15:42:26 +02:00
parent 087ee474ed
commit e2da7edd64
2 changed files with 35 additions and 7 deletions

View file

@ -1,6 +1,6 @@
/**************************************************************************
*
* Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
* Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@ -26,7 +26,7 @@
**************************************************************************/
/**
* TGSI interpretor/executor.
* TGSI interpreter/executor.
*
* Flow control information:
*
@ -88,6 +88,8 @@
#define TEMP_OUTPUT_C TGSI_EXEC_TEMP_OUTPUT_C
#define TEMP_PRIMITIVE_I TGSI_EXEC_TEMP_PRIMITIVE_I
#define TEMP_PRIMITIVE_C TGSI_EXEC_TEMP_PRIMITIVE_C
#define TEMP_CC_I TGSI_EXEC_TEMP_CC_I
#define TEMP_CC_C TGSI_EXEC_TEMP_CC_C
#define TEMP_3_I TGSI_EXEC_TEMP_THREE_I
#define TEMP_3_C TGSI_EXEC_TEMP_THREE_C
#define TEMP_HALF_I TGSI_EXEC_TEMP_HALF_I
@ -2539,6 +2541,13 @@ tgsi_exec_machine_run( struct tgsi_exec_machine *mach )
mach->Primitives[0] = 0;
}
for (i = 0; i < QUAD_SIZE; i++) {
mach->Temps[TEMP_CC_I].xyzw[TEMP_CC_C].u[i] =
(TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_X_SHIFT) |
(TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_Y_SHIFT) |
(TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_Z_SHIFT) |
(TGSI_EXEC_CC_EQ << TGSI_EXEC_CC_W_SHIFT);
}
/* execute declarations (interpolants) */
for (i = 0; i < mach->NumDeclarations; i++) {

View file

@ -1,6 +1,6 @@
/**************************************************************************
*
* Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
* Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@ -25,7 +25,7 @@
*
**************************************************************************/
#if !defined TGSI_EXEC_H
#ifndef TGSI_EXEC_H
#define TGSI_EXEC_H
#include "pipe/p_compiler.h"
@ -140,11 +140,30 @@ struct tgsi_exec_labels
#define TGSI_EXEC_TEMP_PRIMITIVE_I (TGSI_EXEC_NUM_TEMPS + 2)
#define TGSI_EXEC_TEMP_PRIMITIVE_C 2
#define TGSI_EXEC_TEMP_THREE_I (TGSI_EXEC_NUM_TEMPS + 2)
#define TGSI_EXEC_TEMP_THREE_C 3
/* NVIDIA condition code (CC) vector
*/
#define TGSI_EXEC_CC_GT 0x01
#define TGSI_EXEC_CC_EQ 0x02
#define TGSI_EXEC_CC_LT 0x04
#define TGSI_EXEC_CC_UN 0x08
#define TGSI_EXEC_CC_X_MASK 0x000000ff
#define TGSI_EXEC_CC_X_SHIFT 0
#define TGSI_EXEC_CC_Y_MASK 0x0000ff00
#define TGSI_EXEC_CC_Y_SHIFT 8
#define TGSI_EXEC_CC_Z_MASK 0x00ff0000
#define TGSI_EXEC_CC_Z_SHIFT 16
#define TGSI_EXEC_CC_W_MASK 0xff000000
#define TGSI_EXEC_CC_W_SHIFT 24
#define TGSI_EXEC_TEMP_CC_I (TGSI_EXEC_NUM_TEMPS + 2)
#define TGSI_EXEC_TEMP_CC_C 3
#define TGSI_EXEC_TEMP_THREE_I (TGSI_EXEC_NUM_TEMPS + 3)
#define TGSI_EXEC_TEMP_THREE_C 0
#define TGSI_EXEC_TEMP_HALF_I (TGSI_EXEC_NUM_TEMPS + 3)
#define TGSI_EXEC_TEMP_HALF_C 0
#define TGSI_EXEC_TEMP_HALF_C 1
#define TGSI_EXEC_TEMP_R0 (TGSI_EXEC_NUM_TEMPS + 4)