tgsi: add support for 1D/2D texture arrays
This commit is contained in:
@@ -158,7 +158,9 @@ tgsi_texture_names[TGSI_TEXTURE_COUNT] =
|
||||
"RECT",
|
||||
"SHADOW1D",
|
||||
"SHADOW2D",
|
||||
"SHADOWRECT"
|
||||
"SHADOWRECT",
|
||||
"1DARRAY",
|
||||
"2DARRAY"
|
||||
};
|
||||
|
||||
const char *tgsi_property_names[TGSI_PROPERTY_COUNT] =
|
||||
|
@@ -1750,6 +1750,36 @@ exec_tex(struct tgsi_exec_machine *mach,
|
||||
&r[0], &r[1], &r[2], &r[3]); /* outputs */
|
||||
break;
|
||||
|
||||
case TGSI_TEXTURE_1D_ARRAY:
|
||||
FETCH(&r[0], 0, CHAN_X);
|
||||
FETCH(&r[1], 0, CHAN_Y);
|
||||
|
||||
if (modifier == TEX_MODIFIER_PROJECTED) {
|
||||
micro_div(&r[0], &r[0], &r[3]);
|
||||
}
|
||||
|
||||
fetch_texel(mach->Samplers[unit],
|
||||
&r[0], &r[1], &r[2], lod, /* S, T, P, LOD */
|
||||
control,
|
||||
&r[0], &r[1], &r[2], &r[3]); /* outputs */
|
||||
break;
|
||||
|
||||
case TGSI_TEXTURE_2D_ARRAY:
|
||||
FETCH(&r[0], 0, CHAN_X);
|
||||
FETCH(&r[1], 0, CHAN_Y);
|
||||
FETCH(&r[2], 0, CHAN_Z);
|
||||
|
||||
if (modifier == TEX_MODIFIER_PROJECTED) {
|
||||
micro_div(&r[0], &r[0], &r[3]);
|
||||
micro_div(&r[1], &r[1], &r[3]);
|
||||
}
|
||||
|
||||
fetch_texel(mach->Samplers[unit],
|
||||
&r[0], &r[1], &r[2], lod, /* S, T, P, LOD */
|
||||
control,
|
||||
&r[0], &r[1], &r[2], &r[3]); /* outputs */
|
||||
break;
|
||||
|
||||
case TGSI_TEXTURE_3D:
|
||||
case TGSI_TEXTURE_CUBE:
|
||||
FETCH(&r[0], 0, CHAN_X);
|
||||
|
@@ -280,7 +280,12 @@ tgsi_util_get_inst_usage_mask(const struct tgsi_full_instruction *inst,
|
||||
case TGSI_TEXTURE_CUBE:
|
||||
read_mask = TGSI_WRITEMASK_XYZ;
|
||||
break;
|
||||
|
||||
case TGSI_TEXTURE_1D_ARRAY:
|
||||
read_mask = TGSI_WRITEMASK_XY;
|
||||
break;
|
||||
case TGSI_TEXTURE_2D_ARRAY:
|
||||
read_mask = TGSI_WRITEMASK_XYZ;
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
read_mask = 0;
|
||||
|
@@ -430,7 +430,9 @@ struct tgsi_instruction_label
|
||||
#define TGSI_TEXTURE_SHADOW1D 6
|
||||
#define TGSI_TEXTURE_SHADOW2D 7
|
||||
#define TGSI_TEXTURE_SHADOWRECT 8
|
||||
#define TGSI_TEXTURE_COUNT 9
|
||||
#define TGSI_TEXTURE_1D_ARRAY 9
|
||||
#define TGSI_TEXTURE_2D_ARRAY 10
|
||||
#define TGSI_TEXTURE_COUNT 11
|
||||
|
||||
struct tgsi_instruction_texture
|
||||
{
|
||||
|
Reference in New Issue
Block a user