#ifndef TGSI_PARSE_H
#define TGSI_PARSE_H
+#include "pipe/p_compiler.h"
#include "pipe/p_shader_tokens.h"
#if defined __cplusplus
struct tgsi_full_dst_register
{
struct tgsi_dst_register Register;
- struct tgsi_src_register Indirect;
+ struct tgsi_ind_register Indirect;
struct tgsi_dimension Dimension;
- struct tgsi_src_register DimIndirect;
+ struct tgsi_ind_register DimIndirect;
};
struct tgsi_full_src_register
{
struct tgsi_src_register Register;
- struct tgsi_src_register Indirect;
+ struct tgsi_ind_register Indirect;
struct tgsi_dimension Dimension;
- struct tgsi_src_register DimIndirect;
-};
-
-struct tgsi_immediate_array_data
-{
- union tgsi_immediate_data *u;
+ struct tgsi_ind_register DimIndirect;
};
struct tgsi_full_declaration
struct tgsi_declaration Declaration;
struct tgsi_declaration_range Range;
struct tgsi_declaration_dimension Dim;
+ struct tgsi_declaration_interp Interp;
struct tgsi_declaration_semantic Semantic;
- struct tgsi_immediate_array_data ImmediateData;
+ struct tgsi_declaration_resource Resource;
+ struct tgsi_declaration_sampler_view SamplerView;
+ struct tgsi_declaration_array Array;
};
struct tgsi_full_immediate
};
#define TGSI_FULL_MAX_DST_REGISTERS 2
-#define TGSI_FULL_MAX_SRC_REGISTERS 4 /* TXD has 4 */
+#define TGSI_FULL_MAX_SRC_REGISTERS 5 /* SAMPLE_D has 5 */
+#define TGSI_FULL_MAX_TEX_OFFSETS 4
struct tgsi_full_instruction
{
struct tgsi_instruction_texture Texture;
struct tgsi_full_dst_register Dst[TGSI_FULL_MAX_DST_REGISTERS];
struct tgsi_full_src_register Src[TGSI_FULL_MAX_SRC_REGISTERS];
+ struct tgsi_texture_offset TexOffsets[TGSI_FULL_MAX_TEX_OFFSETS];
};
union tgsi_full_token
static INLINE unsigned
tgsi_num_tokens(const struct tgsi_token *tokens)
{
- struct tgsi_header header = *(const struct tgsi_header *) tokens;
+ struct tgsi_header header;
+ memcpy(&header, tokens, sizeof(header));
return header.HeaderSize + header.BodySize;
}