tgsi: remove TGSI_FILE_(IMMEDIATE|TEMP)_ARRAY
Nobody seems to be using it, and only nv50 had a partial implementation. Signed-off-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
affdff230b
commit
d3e07bed90
|
@ -336,7 +336,6 @@ tgsi_default_full_declaration( void )
|
||||||
full_declaration.Range = tgsi_default_declaration_range();
|
full_declaration.Range = tgsi_default_declaration_range();
|
||||||
full_declaration.Semantic = tgsi_default_declaration_semantic();
|
full_declaration.Semantic = tgsi_default_declaration_semantic();
|
||||||
full_declaration.Interp = tgsi_default_declaration_interp();
|
full_declaration.Interp = tgsi_default_declaration_interp();
|
||||||
full_declaration.ImmediateData.u = NULL;
|
|
||||||
full_declaration.Resource = tgsi_default_declaration_resource();
|
full_declaration.Resource = tgsi_default_declaration_resource();
|
||||||
full_declaration.SamplerView = tgsi_default_declaration_sampler_view();
|
full_declaration.SamplerView = tgsi_default_declaration_sampler_view();
|
||||||
|
|
||||||
|
@ -425,24 +424,6 @@ tgsi_build_full_declaration(
|
||||||
header );
|
header );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (full_decl->Declaration.File == TGSI_FILE_IMMEDIATE_ARRAY) {
|
|
||||||
unsigned i, j;
|
|
||||||
union tgsi_immediate_data *data;
|
|
||||||
|
|
||||||
for (i = 0; i <= dr->Last; ++i) {
|
|
||||||
for (j = 0; j < 4; ++j) {
|
|
||||||
unsigned idx = i*4 + j;
|
|
||||||
if (maxsize <= size)
|
|
||||||
return 0;
|
|
||||||
data = (union tgsi_immediate_data *) &tokens[size];
|
|
||||||
++size;
|
|
||||||
|
|
||||||
*data = full_decl->ImmediateData.u[idx];
|
|
||||||
declaration_grow( declaration, header );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (full_decl->Declaration.File == TGSI_FILE_RESOURCE) {
|
if (full_decl->Declaration.File == TGSI_FILE_RESOURCE) {
|
||||||
struct tgsi_declaration_resource *dr;
|
struct tgsi_declaration_resource *dr;
|
||||||
|
|
||||||
|
|
|
@ -347,44 +347,6 @@ iter_declaration(
|
||||||
TXT( ", INVARIANT" );
|
TXT( ", INVARIANT" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (decl->Declaration.File == TGSI_FILE_IMMEDIATE_ARRAY) {
|
|
||||||
unsigned i;
|
|
||||||
char range_indent[4];
|
|
||||||
|
|
||||||
TXT(" {");
|
|
||||||
|
|
||||||
if (decl->Range.Last < 10)
|
|
||||||
range_indent[0] = '\0';
|
|
||||||
else if (decl->Range.Last < 100) {
|
|
||||||
range_indent[0] = ' ';
|
|
||||||
range_indent[1] = '\0';
|
|
||||||
} else if (decl->Range.Last < 1000) {
|
|
||||||
range_indent[0] = ' ';
|
|
||||||
range_indent[1] = ' ';
|
|
||||||
range_indent[2] = '\0';
|
|
||||||
} else {
|
|
||||||
range_indent[0] = ' ';
|
|
||||||
range_indent[1] = ' ';
|
|
||||||
range_indent[2] = ' ';
|
|
||||||
range_indent[3] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
dump_imm_data(iter, decl->ImmediateData.u,
|
|
||||||
4, TGSI_IMM_FLOAT32);
|
|
||||||
for(i = 1; i <= decl->Range.Last; ++i) {
|
|
||||||
/* indent by strlen of:
|
|
||||||
* "DCL IMMX[0..1] {" */
|
|
||||||
CHR('\n');
|
|
||||||
TXT( " " );
|
|
||||||
TXT( range_indent );
|
|
||||||
dump_imm_data(iter, decl->ImmediateData.u + i,
|
|
||||||
4, TGSI_IMM_FLOAT32);
|
|
||||||
}
|
|
||||||
|
|
||||||
TXT(" }");
|
|
||||||
}
|
|
||||||
|
|
||||||
EOL();
|
EOL();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -749,19 +749,6 @@ tgsi_exec_machine_bind_shader(
|
||||||
++mach->NumOutputs;
|
++mach->NumOutputs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (parse.FullToken.FullDeclaration.Declaration.File ==
|
|
||||||
TGSI_FILE_IMMEDIATE_ARRAY) {
|
|
||||||
unsigned reg;
|
|
||||||
struct tgsi_full_declaration *decl =
|
|
||||||
&parse.FullToken.FullDeclaration;
|
|
||||||
debug_assert(decl->Range.Last < TGSI_EXEC_NUM_IMMEDIATES);
|
|
||||||
for (reg = decl->Range.First; reg <= decl->Range.Last; ++reg) {
|
|
||||||
for( i = 0; i < 4; i++ ) {
|
|
||||||
int idx = reg * 4 + i;
|
|
||||||
mach->ImmArray[reg][i] = decl->ImmediateData.u[idx].Float;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
memcpy(declarations + numDeclarations,
|
memcpy(declarations + numDeclarations,
|
||||||
&parse.FullToken.FullDeclaration,
|
&parse.FullToken.FullDeclaration,
|
||||||
sizeof(declarations[0]));
|
sizeof(declarations[0]));
|
||||||
|
@ -1116,16 +1103,6 @@ fetch_src_file_channel(const struct tgsi_exec_machine *mach,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TGSI_FILE_TEMPORARY_ARRAY:
|
|
||||||
for (i = 0; i < TGSI_QUAD_SIZE; i++) {
|
|
||||||
assert(index->i[i] < TGSI_EXEC_NUM_TEMPS);
|
|
||||||
assert(index2D->i[i] < TGSI_EXEC_NUM_TEMP_ARRAYS);
|
|
||||||
|
|
||||||
chan->u[i] =
|
|
||||||
mach->TempArray[index2D->i[i]][index->i[i]].xyzw[swizzle].u[i];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TGSI_FILE_IMMEDIATE:
|
case TGSI_FILE_IMMEDIATE:
|
||||||
for (i = 0; i < TGSI_QUAD_SIZE; i++) {
|
for (i = 0; i < TGSI_QUAD_SIZE; i++) {
|
||||||
assert(index->i[i] >= 0 && index->i[i] < (int)mach->ImmLimit);
|
assert(index->i[i] >= 0 && index->i[i] < (int)mach->ImmLimit);
|
||||||
|
@ -1135,14 +1112,6 @@ fetch_src_file_channel(const struct tgsi_exec_machine *mach,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TGSI_FILE_IMMEDIATE_ARRAY:
|
|
||||||
for (i = 0; i < TGSI_QUAD_SIZE; i++) {
|
|
||||||
assert(index2D->i[i] == 0);
|
|
||||||
|
|
||||||
chan->f[i] = mach->ImmArray[index->i[i]][swizzle];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TGSI_FILE_ADDRESS:
|
case TGSI_FILE_ADDRESS:
|
||||||
for (i = 0; i < TGSI_QUAD_SIZE; i++) {
|
for (i = 0; i < TGSI_QUAD_SIZE; i++) {
|
||||||
assert(index->i[i] >= 0);
|
assert(index->i[i] >= 0);
|
||||||
|
@ -1504,16 +1473,6 @@ store_dest(struct tgsi_exec_machine *mach,
|
||||||
dst = &mach->Temps[offset + index].xyzw[chan_index];
|
dst = &mach->Temps[offset + index].xyzw[chan_index];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TGSI_FILE_TEMPORARY_ARRAY:
|
|
||||||
index = reg->Register.Index;
|
|
||||||
assert( index < TGSI_EXEC_NUM_TEMPS );
|
|
||||||
assert( index2D.i[0] < TGSI_EXEC_NUM_TEMP_ARRAYS );
|
|
||||||
/* XXX we use index2D.i[0] here but somehow we might
|
|
||||||
* end up with someone trying to store indirectly in
|
|
||||||
* different buffers */
|
|
||||||
dst = &mach->TempArray[index2D.i[0]][offset + index].xyzw[chan_index];
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TGSI_FILE_ADDRESS:
|
case TGSI_FILE_ADDRESS:
|
||||||
index = reg->Register.Index;
|
index = reg->Register.Index;
|
||||||
dst = &mach->Addrs[index].xyzw[chan_index];
|
dst = &mach->Addrs[index].xyzw[chan_index];
|
||||||
|
|
|
@ -141,7 +141,6 @@ struct tgsi_sampler
|
||||||
|
|
||||||
#define TGSI_EXEC_NUM_TEMPS 4096
|
#define TGSI_EXEC_NUM_TEMPS 4096
|
||||||
#define TGSI_EXEC_NUM_IMMEDIATES 256
|
#define TGSI_EXEC_NUM_IMMEDIATES 256
|
||||||
#define TGSI_EXEC_NUM_TEMP_ARRAYS 8
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Locations of various utility registers (_I = Index, _C = Channel)
|
* Locations of various utility registers (_I = Index, _C = Channel)
|
||||||
|
@ -269,7 +268,6 @@ struct tgsi_exec_machine
|
||||||
*/
|
*/
|
||||||
struct tgsi_exec_vector Temps[TGSI_EXEC_NUM_TEMPS +
|
struct tgsi_exec_vector Temps[TGSI_EXEC_NUM_TEMPS +
|
||||||
TGSI_EXEC_NUM_TEMP_EXTRAS];
|
TGSI_EXEC_NUM_TEMP_EXTRAS];
|
||||||
struct tgsi_exec_vector TempArray[TGSI_EXEC_NUM_TEMP_ARRAYS][TGSI_EXEC_NUM_TEMPS];
|
|
||||||
|
|
||||||
float Imms[TGSI_EXEC_NUM_IMMEDIATES][4];
|
float Imms[TGSI_EXEC_NUM_IMMEDIATES][4];
|
||||||
|
|
||||||
|
|
|
@ -121,17 +121,6 @@ tgsi_parse_token(
|
||||||
next_token( ctx, &decl->Semantic );
|
next_token( ctx, &decl->Semantic );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (decl->Declaration.File == TGSI_FILE_IMMEDIATE_ARRAY) {
|
|
||||||
unsigned i, j;
|
|
||||||
decl->ImmediateData.u = (union tgsi_immediate_data*)
|
|
||||||
&ctx->Tokens[ctx->Position];
|
|
||||||
for (i = 0; i <= decl->Range.Last; ++i) {
|
|
||||||
for (j = 0; j < 4; ++j) {
|
|
||||||
ctx->Position++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (decl->Declaration.File == TGSI_FILE_RESOURCE) {
|
if (decl->Declaration.File == TGSI_FILE_RESOURCE) {
|
||||||
next_token(ctx, &decl->Resource);
|
next_token(ctx, &decl->Resource);
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,11 +57,6 @@ struct tgsi_full_src_register
|
||||||
struct tgsi_src_register DimIndirect;
|
struct tgsi_src_register DimIndirect;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct tgsi_immediate_array_data
|
|
||||||
{
|
|
||||||
union tgsi_immediate_data *u;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct tgsi_full_declaration
|
struct tgsi_full_declaration
|
||||||
{
|
{
|
||||||
struct tgsi_declaration Declaration;
|
struct tgsi_declaration Declaration;
|
||||||
|
@ -69,7 +64,6 @@ struct tgsi_full_declaration
|
||||||
struct tgsi_declaration_dimension Dim;
|
struct tgsi_declaration_dimension Dim;
|
||||||
struct tgsi_declaration_interp Interp;
|
struct tgsi_declaration_interp Interp;
|
||||||
struct tgsi_declaration_semantic Semantic;
|
struct tgsi_declaration_semantic Semantic;
|
||||||
struct tgsi_immediate_array_data ImmediateData;
|
|
||||||
struct tgsi_declaration_resource Resource;
|
struct tgsi_declaration_resource Resource;
|
||||||
struct tgsi_declaration_sampler_view SamplerView;
|
struct tgsi_declaration_sampler_view SamplerView;
|
||||||
};
|
};
|
||||||
|
|
|
@ -257,8 +257,6 @@ static const char *file_names[TGSI_FILE_COUNT] =
|
||||||
"IMM",
|
"IMM",
|
||||||
"PRED",
|
"PRED",
|
||||||
"SV",
|
"SV",
|
||||||
"IMMX",
|
|
||||||
"TEMPX",
|
|
||||||
"RES"
|
"RES"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -52,8 +52,6 @@ const char *tgsi_file_names[TGSI_FILE_COUNT] =
|
||||||
"IMM",
|
"IMM",
|
||||||
"PRED",
|
"PRED",
|
||||||
"SV",
|
"SV",
|
||||||
"IMMX",
|
|
||||||
"TEMPX",
|
|
||||||
"RES",
|
"RES",
|
||||||
"SVIEW"
|
"SVIEW"
|
||||||
};
|
};
|
||||||
|
|
|
@ -1084,7 +1084,6 @@ static boolean parse_declaration( struct translate_ctx *ctx )
|
||||||
const char *cur, *cur2;
|
const char *cur, *cur2;
|
||||||
uint advance;
|
uint advance;
|
||||||
boolean is_vs_input;
|
boolean is_vs_input;
|
||||||
boolean is_imm_array;
|
|
||||||
|
|
||||||
if (!eat_white( &ctx->cur )) {
|
if (!eat_white( &ctx->cur )) {
|
||||||
report_error( ctx, "Syntax error" );
|
report_error( ctx, "Syntax error" );
|
||||||
|
@ -1112,7 +1111,6 @@ static boolean parse_declaration( struct translate_ctx *ctx )
|
||||||
|
|
||||||
is_vs_input = (file == TGSI_FILE_INPUT &&
|
is_vs_input = (file == TGSI_FILE_INPUT &&
|
||||||
ctx->processor == TGSI_PROCESSOR_VERTEX);
|
ctx->processor == TGSI_PROCESSOR_VERTEX);
|
||||||
is_imm_array = (file == TGSI_FILE_IMMEDIATE_ARRAY);
|
|
||||||
|
|
||||||
cur = ctx->cur;
|
cur = ctx->cur;
|
||||||
eat_opt_white( &cur );
|
eat_opt_white( &cur );
|
||||||
|
@ -1264,44 +1262,6 @@ static boolean parse_declaration( struct translate_ctx *ctx )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (is_imm_array) {
|
|
||||||
unsigned i;
|
|
||||||
union tgsi_immediate_data *vals_itr;
|
|
||||||
/* we have our immediate data */
|
|
||||||
if (*cur != '{') {
|
|
||||||
report_error( ctx, "Immediate array without data" );
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
++cur;
|
|
||||||
ctx->cur = cur;
|
|
||||||
|
|
||||||
decl.ImmediateData.u =
|
|
||||||
MALLOC(sizeof(union tgsi_immediate_data) * 4 *
|
|
||||||
(decl.Range.Last + 1));
|
|
||||||
vals_itr = decl.ImmediateData.u;
|
|
||||||
for (i = 0; i <= decl.Range.Last; ++i) {
|
|
||||||
if (!parse_immediate_data(ctx, TGSI_IMM_FLOAT32, vals_itr)) {
|
|
||||||
FREE(decl.ImmediateData.u);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
vals_itr += 4;
|
|
||||||
eat_opt_white( &ctx->cur );
|
|
||||||
if (*ctx->cur != ',') {
|
|
||||||
if (i != decl.Range.Last) {
|
|
||||||
report_error( ctx, "Not enough data in immediate array!" );
|
|
||||||
FREE(decl.ImmediateData.u);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
++ctx->cur;
|
|
||||||
}
|
|
||||||
eat_opt_white( &ctx->cur );
|
|
||||||
if (*ctx->cur != '}') {
|
|
||||||
FREE(decl.ImmediateData.u);
|
|
||||||
report_error( ctx, "Immediate array data missing closing '}'" );
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
++ctx->cur;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cur = ctx->cur;
|
cur = ctx->cur;
|
||||||
|
@ -1332,9 +1292,6 @@ static boolean parse_declaration( struct translate_ctx *ctx )
|
||||||
ctx->header,
|
ctx->header,
|
||||||
(uint) (ctx->tokens_end - ctx->tokens_cur) );
|
(uint) (ctx->tokens_end - ctx->tokens_cur) );
|
||||||
|
|
||||||
if (is_imm_array)
|
|
||||||
FREE(decl.ImmediateData.u);
|
|
||||||
|
|
||||||
if (advance == 0)
|
if (advance == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
ctx->tokens_cur += advance;
|
ctx->tokens_cur += advance;
|
||||||
|
|
|
@ -318,8 +318,6 @@ static nv50_ir::DataFile translateFile(uint file)
|
||||||
case TGSI_FILE_PREDICATE: return nv50_ir::FILE_PREDICATE;
|
case TGSI_FILE_PREDICATE: return nv50_ir::FILE_PREDICATE;
|
||||||
case TGSI_FILE_IMMEDIATE: return nv50_ir::FILE_IMMEDIATE;
|
case TGSI_FILE_IMMEDIATE: return nv50_ir::FILE_IMMEDIATE;
|
||||||
case TGSI_FILE_SYSTEM_VALUE: return nv50_ir::FILE_SYSTEM_VALUE;
|
case TGSI_FILE_SYSTEM_VALUE: return nv50_ir::FILE_SYSTEM_VALUE;
|
||||||
case TGSI_FILE_IMMEDIATE_ARRAY: return nv50_ir::FILE_IMMEDIATE;
|
|
||||||
case TGSI_FILE_TEMPORARY_ARRAY: return nv50_ir::FILE_MEMORY_LOCAL;
|
|
||||||
case TGSI_FILE_RESOURCE: return nv50_ir::FILE_MEMORY_GLOBAL;
|
case TGSI_FILE_RESOURCE: return nv50_ir::FILE_MEMORY_GLOBAL;
|
||||||
case TGSI_FILE_SAMPLER:
|
case TGSI_FILE_SAMPLER:
|
||||||
case TGSI_FILE_NULL:
|
case TGSI_FILE_NULL:
|
||||||
|
@ -656,8 +654,6 @@ public:
|
||||||
|
|
||||||
nv50_ir::DynArray tempArrays;
|
nv50_ir::DynArray tempArrays;
|
||||||
nv50_ir::DynArray immdArrays;
|
nv50_ir::DynArray immdArrays;
|
||||||
int tempArrayCount;
|
|
||||||
int immdArrayCount;
|
|
||||||
|
|
||||||
typedef nv50_ir::BuildUtil::Location Location;
|
typedef nv50_ir::BuildUtil::Location Location;
|
||||||
// these registers are per-subroutine, cannot be used for parameter passing
|
// these registers are per-subroutine, cannot be used for parameter passing
|
||||||
|
@ -728,8 +724,6 @@ bool Source::scanSource()
|
||||||
resources.resize(scan.file_max[TGSI_FILE_RESOURCE] + 1);
|
resources.resize(scan.file_max[TGSI_FILE_RESOURCE] + 1);
|
||||||
|
|
||||||
info->immd.bufSize = 0;
|
info->immd.bufSize = 0;
|
||||||
tempArrayCount = 0;
|
|
||||||
immdArrayCount = 0;
|
|
||||||
|
|
||||||
info->numInputs = scan.file_max[TGSI_FILE_INPUT] + 1;
|
info->numInputs = scan.file_max[TGSI_FILE_INPUT] + 1;
|
||||||
info->numOutputs = scan.file_max[TGSI_FILE_OUTPUT] + 1;
|
info->numOutputs = scan.file_max[TGSI_FILE_OUTPUT] + 1;
|
||||||
|
@ -970,48 +964,6 @@ bool Source::scanDeclaration(const struct tgsi_full_declaration *decl)
|
||||||
for (i = first; i <= last; ++i)
|
for (i = first; i <= last; ++i)
|
||||||
textureViews[i].target = decl->SamplerView.Resource;
|
textureViews[i].target = decl->SamplerView.Resource;
|
||||||
break;
|
break;
|
||||||
case TGSI_FILE_IMMEDIATE_ARRAY:
|
|
||||||
{
|
|
||||||
if (decl->Dim.Index2D >= immdArrayCount)
|
|
||||||
immdArrayCount = decl->Dim.Index2D + 1;
|
|
||||||
immdArrays[decl->Dim.Index2D].u32 = (last + 1) << 2;
|
|
||||||
uint32_t base, count;
|
|
||||||
switch (decl->Declaration.UsageMask) {
|
|
||||||
case 0x1: c = 1; break;
|
|
||||||
case 0x3: c = 2; break;
|
|
||||||
default:
|
|
||||||
c = 4;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
immdArrays[decl->Dim.Index2D].u32 |= c;
|
|
||||||
count = (last + 1) * c;
|
|
||||||
base = info->immd.bufSize / 4;
|
|
||||||
info->immd.bufSize = (info->immd.bufSize + count * 4 + 0xf) & ~0xf;
|
|
||||||
info->immd.buf = (uint32_t *)REALLOC(info->immd.buf, base * 4,
|
|
||||||
info->immd.bufSize);
|
|
||||||
// NOTE: this assumes array declarations are ordered by Dim.Index2D
|
|
||||||
for (i = 0; i < count; ++i)
|
|
||||||
info->immd.buf[base + i] = decl->ImmediateData.u[i].Uint;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TGSI_FILE_TEMPORARY_ARRAY:
|
|
||||||
{
|
|
||||||
if (decl->Dim.Index2D >= tempArrayCount)
|
|
||||||
tempArrayCount = decl->Dim.Index2D + 1;
|
|
||||||
tempArrays[decl->Dim.Index2D].u32 = (last + 1) << 2;
|
|
||||||
uint32_t count;
|
|
||||||
switch (decl->Declaration.UsageMask) {
|
|
||||||
case 0x1: c = 1; break;
|
|
||||||
case 0x3: c = 2; break;
|
|
||||||
default:
|
|
||||||
c = 4;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
tempArrays[decl->Dim.Index2D].u32 |= c;
|
|
||||||
count = (last + 1) * c;
|
|
||||||
info->bin.tlsSpace += (info->bin.tlsSpace + count * 4 + 0xf) & ~0xf;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TGSI_FILE_NULL:
|
case TGSI_FILE_NULL:
|
||||||
case TGSI_FILE_TEMPORARY:
|
case TGSI_FILE_TEMPORARY:
|
||||||
case TGSI_FILE_ADDRESS:
|
case TGSI_FILE_ADDRESS:
|
||||||
|
@ -1224,8 +1176,6 @@ private:
|
||||||
DataArray aData; // TGSI_FILE_ADDRESS
|
DataArray aData; // TGSI_FILE_ADDRESS
|
||||||
DataArray pData; // TGSI_FILE_PREDICATE
|
DataArray pData; // TGSI_FILE_PREDICATE
|
||||||
DataArray oData; // TGSI_FILE_OUTPUT (if outputs in registers)
|
DataArray oData; // TGSI_FILE_OUTPUT (if outputs in registers)
|
||||||
std::vector<DataArray> lData; // TGSI_FILE_TEMPORARY_ARRAY
|
|
||||||
std::vector<DataArray> iData; // TGSI_FILE_IMMEDIATE_ARRAY
|
|
||||||
|
|
||||||
Value *zero;
|
Value *zero;
|
||||||
Value *fragCoord[4];
|
Value *fragCoord[4];
|
||||||
|
@ -1405,12 +1355,6 @@ Converter::getArrayForFile(unsigned file, int idx)
|
||||||
return &pData;
|
return &pData;
|
||||||
case TGSI_FILE_ADDRESS:
|
case TGSI_FILE_ADDRESS:
|
||||||
return &aData;
|
return &aData;
|
||||||
case TGSI_FILE_TEMPORARY_ARRAY:
|
|
||||||
assert(idx < code->tempArrayCount);
|
|
||||||
return &lData[idx];
|
|
||||||
case TGSI_FILE_IMMEDIATE_ARRAY:
|
|
||||||
assert(idx < code->immdArrayCount);
|
|
||||||
return &iData[idx];
|
|
||||||
case TGSI_FILE_OUTPUT:
|
case TGSI_FILE_OUTPUT:
|
||||||
assert(prog->getType() == Program::TYPE_FRAGMENT);
|
assert(prog->getType() == Program::TYPE_FRAGMENT);
|
||||||
return &oData;
|
return &oData;
|
||||||
|
@ -1467,7 +1411,6 @@ Converter::acquireDst(int d, int c)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (dst.isIndirect(0) ||
|
if (dst.isIndirect(0) ||
|
||||||
f == TGSI_FILE_TEMPORARY_ARRAY ||
|
|
||||||
f == TGSI_FILE_SYSTEM_VALUE ||
|
f == TGSI_FILE_SYSTEM_VALUE ||
|
||||||
(f == TGSI_FILE_OUTPUT && prog->getType() != Program::TYPE_FRAGMENT))
|
(f == TGSI_FILE_OUTPUT && prog->getType() != Program::TYPE_FRAGMENT))
|
||||||
return getScratch();
|
return getScratch();
|
||||||
|
@ -1525,7 +1468,6 @@ Converter::storeDst(const tgsi::Instruction::DstRegister dst, int c,
|
||||||
mkStore(OP_EXPORT, TYPE_U32, dstToSym(dst, c), ptr, val);
|
mkStore(OP_EXPORT, TYPE_U32, dstToSym(dst, c), ptr, val);
|
||||||
} else
|
} else
|
||||||
if (f == TGSI_FILE_TEMPORARY ||
|
if (f == TGSI_FILE_TEMPORARY ||
|
||||||
f == TGSI_FILE_TEMPORARY_ARRAY ||
|
|
||||||
f == TGSI_FILE_PREDICATE ||
|
f == TGSI_FILE_PREDICATE ||
|
||||||
f == TGSI_FILE_ADDRESS ||
|
f == TGSI_FILE_ADDRESS ||
|
||||||
f == TGSI_FILE_OUTPUT) {
|
f == TGSI_FILE_OUTPUT) {
|
||||||
|
@ -2729,28 +2671,6 @@ Converter::Converter(Program *ir, const tgsi::Source *code) : BuildUtil(ir),
|
||||||
aData.setup(TGSI_FILE_ADDRESS, 0, 0, aSize, 4, 4, FILE_ADDRESS, 0);
|
aData.setup(TGSI_FILE_ADDRESS, 0, 0, aSize, 4, 4, FILE_ADDRESS, 0);
|
||||||
oData.setup(TGSI_FILE_OUTPUT, 0, 0, oSize, 4, 4, FILE_GPR, 0);
|
oData.setup(TGSI_FILE_OUTPUT, 0, 0, oSize, 4, 4, FILE_GPR, 0);
|
||||||
|
|
||||||
for (int vol = 0, i = 0; i < code->tempArrayCount; ++i) {
|
|
||||||
int len = code->tempArrays[i].u32 >> 2;
|
|
||||||
int dim = code->tempArrays[i].u32 & 3;
|
|
||||||
|
|
||||||
lData.push_back(DataArray(this));
|
|
||||||
lData.back().setup(TGSI_FILE_TEMPORARY_ARRAY, i, vol, len, dim, 4,
|
|
||||||
FILE_MEMORY_LOCAL, 0);
|
|
||||||
|
|
||||||
vol += (len * dim * 4 + 0xf) & ~0xf;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int vol = 0, i = 0; i < code->immdArrayCount; ++i) {
|
|
||||||
int len = code->immdArrays[i].u32 >> 2;
|
|
||||||
int dim = code->immdArrays[i].u32 & 3;
|
|
||||||
|
|
||||||
lData.push_back(DataArray(this));
|
|
||||||
lData.back().setup(TGSI_FILE_IMMEDIATE_ARRAY, i, vol, len, dim, 4,
|
|
||||||
FILE_MEMORY_CONST, 14);
|
|
||||||
|
|
||||||
vol += (len * dim * 4 + 0xf) & ~0xf;
|
|
||||||
}
|
|
||||||
|
|
||||||
zero = mkImm((uint32_t)0);
|
zero = mkImm((uint32_t)0);
|
||||||
|
|
||||||
vtxBaseValid = 0;
|
vtxBaseValid = 0;
|
||||||
|
|
|
@ -74,10 +74,8 @@ enum tgsi_file_type {
|
||||||
TGSI_FILE_IMMEDIATE =7,
|
TGSI_FILE_IMMEDIATE =7,
|
||||||
TGSI_FILE_PREDICATE =8,
|
TGSI_FILE_PREDICATE =8,
|
||||||
TGSI_FILE_SYSTEM_VALUE =9,
|
TGSI_FILE_SYSTEM_VALUE =9,
|
||||||
TGSI_FILE_IMMEDIATE_ARRAY =10,
|
TGSI_FILE_RESOURCE =10,
|
||||||
TGSI_FILE_TEMPORARY_ARRAY =11,
|
TGSI_FILE_SAMPLER_VIEW =11,
|
||||||
TGSI_FILE_RESOURCE =12,
|
|
||||||
TGSI_FILE_SAMPLER_VIEW =13,
|
|
||||||
TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */
|
TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue