[D3DCOMPILER_43]

* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64285
This commit is contained in:
Amine Khaldi 2014-09-25 19:38:09 +00:00
parent 2b48c4a4b1
commit b5a2ac0266
10 changed files with 2906 additions and 3686 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
/* A Bison parser, made by GNU Bison 2.5. */ /* A Bison parser, made by GNU Bison 3.0.2. */
/* Bison interface for Yacc-like parsers in C /* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -30,13 +30,21 @@
This special exception was added by the Free Software Foundation in This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */ version 2.2 of Bison. */
#ifndef YY_ASMSHADER_ASMSHADER_TAB_H_INCLUDED
# define YY_ASMSHADER_ASMSHADER_TAB_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int asmshader_debug;
#endif
/* Tokens. */ /* Token type. */
#ifndef YYTOKENTYPE #ifndef YYTOKENTYPE
# define YYTOKENTYPE # define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers enum yytokentype
know about them. */ {
enum yytokentype {
INSTR_ADD = 258, INSTR_ADD = 258,
INSTR_NOP = 259, INSTR_NOP = 259,
INSTR_MOV = 260, INSTR_MOV = 260,
@ -200,14 +208,12 @@
}; };
#endif #endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE typedef union YYSTYPE YYSTYPE;
union YYSTYPE
{ {
#line 70 "asmshader.y" /* yacc.c:1909 */
/* Line 2068 of yacc.c */
#line 70 "asmshader.y"
struct { struct {
float val; float val;
@ -242,16 +248,15 @@ typedef union YYSTYPE
struct rel_reg rel_reg; struct rel_reg rel_reg;
struct src_regs sregs; struct src_regs sregs;
#line 252 "asmshader.tab.h" /* yacc.c:1909 */
};
/* Line 2068 of yacc.c */
#line 249 "asmshader.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
#endif #endif
extern YYSTYPE asmshader_lval; extern YYSTYPE asmshader_lval;
int asmshader_parse (void);
#endif /* !YY_ASMSHADER_ASMSHADER_TAB_H_INCLUDED */

View file

@ -2618,6 +2618,7 @@ void SlDeleteShader(struct bwriter_shader *shader) {
d3dcompiler_free(shader->instr[i]->src[j].rel_reg); d3dcompiler_free(shader->instr[i]->src[j].rel_reg);
} }
d3dcompiler_free(shader->instr[i]->src); d3dcompiler_free(shader->instr[i]->src);
d3dcompiler_free(shader->instr[i]->dst.rel_reg);
d3dcompiler_free(shader->instr[i]); d3dcompiler_free(shader->instr[i]);
} }
d3dcompiler_free(shader->instr); d3dcompiler_free(shader->instr);

View file

@ -140,11 +140,12 @@ static void wpp_warning(const char *file, int line, int col, const char *_near,
static char *wpp_lookup_mem(const char *filename, int type, const char *parent_name, static char *wpp_lookup_mem(const char *filename, int type, const char *parent_name,
char **include_path, int include_path_count) char **include_path, int include_path_count)
{ {
/* Here we return always ok. We will maybe fail on the next wpp_open_mem */ /* We don't check for file existence here. We will potentially fail on
* the following wpp_open_mem(). */
char *path; char *path;
int i; int i;
TRACE("Looking for include %s.\n", debugstr_a(filename)); TRACE("Looking for include %s, parent %s.\n", debugstr_a(filename), debugstr_a(parent_name));
parent_include = NULL; parent_include = NULL;
if (strcmp(parent_name, initial_filename)) if (strcmp(parent_name, initial_filename))

View file

@ -829,6 +829,11 @@ enum hlsl_ir_expr_op {
HLSL_IR_UNOP_SAT, HLSL_IR_UNOP_SAT,
HLSL_IR_UNOP_PREINC,
HLSL_IR_UNOP_PREDEC,
HLSL_IR_UNOP_POSTINC,
HLSL_IR_UNOP_POSTDEC,
HLSL_IR_BINOP_ADD, HLSL_IR_BINOP_ADD,
HLSL_IR_BINOP_SUB, HLSL_IR_BINOP_SUB,
HLSL_IR_BINOP_MUL, HLSL_IR_BINOP_MUL,
@ -859,11 +864,6 @@ enum hlsl_ir_expr_op {
HLSL_IR_BINOP_POW, HLSL_IR_BINOP_POW,
HLSL_IR_BINOP_PREINC,
HLSL_IR_BINOP_PREDEC,
HLSL_IR_BINOP_POSTINC,
HLSL_IR_BINOP_POSTDEC,
HLSL_IR_TEROP_LERP, HLSL_IR_TEROP_LERP,
HLSL_IR_SEQUENCE, HLSL_IR_SEQUENCE,
@ -1109,8 +1109,6 @@ static inline struct hlsl_ir_loop *loop_from_node(const struct hlsl_ir_node *nod
BOOL add_declaration(struct hlsl_scope *scope, struct hlsl_ir_var *decl, BOOL local_var) DECLSPEC_HIDDEN; BOOL add_declaration(struct hlsl_scope *scope, struct hlsl_ir_var *decl, BOOL local_var) DECLSPEC_HIDDEN;
struct hlsl_ir_var *get_variable(struct hlsl_scope *scope, const char *name) DECLSPEC_HIDDEN; struct hlsl_ir_var *get_variable(struct hlsl_scope *scope, const char *name) DECLSPEC_HIDDEN;
void free_declaration(struct hlsl_ir_var *decl) DECLSPEC_HIDDEN; void free_declaration(struct hlsl_ir_var *decl) DECLSPEC_HIDDEN;
BOOL add_func_parameter(struct list *list, struct parse_parameter *param,
const struct source_location *loc) DECLSPEC_HIDDEN;
struct hlsl_type *new_hlsl_type(const char *name, enum hlsl_type_class type_class, struct hlsl_type *new_hlsl_type(const char *name, enum hlsl_type_class type_class,
enum hlsl_base_type base_type, unsigned dimx, unsigned dimy) DECLSPEC_HIDDEN; enum hlsl_base_type base_type, unsigned dimx, unsigned dimy) DECLSPEC_HIDDEN;
struct hlsl_type *new_array_type(struct hlsl_type *basic_type, unsigned int array_size) DECLSPEC_HIDDEN; struct hlsl_type *new_array_type(struct hlsl_type *basic_type, unsigned int array_size) DECLSPEC_HIDDEN;

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
/* A Bison parser, made by GNU Bison 2.5. */ /* A Bison parser, made by GNU Bison 3.0.2. */
/* Bison interface for Yacc-like parsers in C /* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -30,13 +30,21 @@
This special exception was added by the Free Software Foundation in This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */ version 2.2 of Bison. */
#ifndef YY_HLSL_HLSL_TAB_H_INCLUDED
# define YY_HLSL_HLSL_TAB_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int hlsl_debug;
#endif
/* Tokens. */ /* Token type. */
#ifndef YYTOKENTYPE #ifndef YYTOKENTYPE
# define YYTOKENTYPE # define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers enum yytokentype
know about them. */ {
enum yytokentype {
KW_BLENDSTATE = 258, KW_BLENDSTATE = 258,
KW_BREAK = 259, KW_BREAK = 259,
KW_BUFFER = 260, KW_BUFFER = 260,
@ -142,14 +150,12 @@
}; };
#endif #endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE typedef union YYSTYPE YYSTYPE;
union YYSTYPE
{ {
#line 866 "hlsl.y" /* yacc.c:1909 */
/* Line 2068 of yacc.c */
#line 841 "hlsl.y"
struct hlsl_type *type; struct hlsl_type *type;
INT intval; INT intval;
@ -167,30 +173,29 @@ typedef union YYSTYPE
enum parse_unary_op unary_op; enum parse_unary_op unary_op;
enum parse_assign_op assign_op; enum parse_assign_op assign_op;
#line 177 "hlsl.tab.h" /* yacc.c:1909 */
};
/* Line 2068 of yacc.c */
#line 174 "hlsl.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
#endif #endif
extern YYSTYPE hlsl_lval; /* Location type. */
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE typedef struct YYLTYPE YYLTYPE;
struct YYLTYPE
{ {
int first_line; int first_line;
int first_column; int first_column;
int last_line; int last_line;
int last_column; int last_column;
} YYLTYPE; };
# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
# define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1 # define YYLTYPE_IS_TRIVIAL 1
#endif #endif
extern YYLTYPE hlsl_lloc;
extern YYSTYPE hlsl_lval;
extern YYLTYPE hlsl_lloc;
int hlsl_parse (void);
#endif /* !YY_HLSL_HLSL_TAB_H_INCLUDED */

View file

@ -46,7 +46,7 @@ void hlsl_message(const char *fmt, ...)
static const char *hlsl_get_error_level_name(enum hlsl_error_level level) static const char *hlsl_get_error_level_name(enum hlsl_error_level level)
{ {
const char *names[] = static const char * const names[] =
{ {
"error", "error",
"warning", "warning",
@ -199,7 +199,7 @@ static void declare_predefined_types(struct hlsl_scope *scope)
{ {
struct hlsl_type *type; struct hlsl_type *type;
unsigned int x, y, bt; unsigned int x, y, bt;
static const char *names[] = static const char * const names[] =
{ {
"float", "float",
"half", "half",
@ -808,6 +808,31 @@ static BOOL add_typedef(DWORD modifiers, struct hlsl_type *orig_type, struct lis
return TRUE; return TRUE;
} }
static BOOL add_func_parameter(struct list *list, struct parse_parameter *param, const struct source_location *loc)
{
struct hlsl_ir_var *decl = d3dcompiler_alloc(sizeof(*decl));
if (!decl)
{
ERR("Out of memory.\n");
return FALSE;
}
decl->node.type = HLSL_IR_VAR;
decl->node.data_type = param->type;
decl->node.loc = *loc;
decl->name = param->name;
decl->semantic = param->semantic;
decl->modifiers = param->modifiers;
if (!add_declaration(hlsl_ctx.cur_scope, decl, FALSE))
{
free_declaration(decl);
return FALSE;
}
list_add_tail(list, &decl->node.entry);
return TRUE;
}
static const struct hlsl_ir_function_decl *get_overloaded_func(struct wine_rb_tree *funcs, char *name, static const struct hlsl_ir_function_decl *get_overloaded_func(struct wine_rb_tree *funcs, char *name,
struct list *params, BOOL exact_signature) struct list *params, BOOL exact_signature)
{ {
@ -1400,7 +1425,6 @@ base_type: KW_VOID
{ {
struct hlsl_type *type; struct hlsl_type *type;
TRACE("Type %s.\n", $1);
type = get_type(hlsl_ctx.cur_scope, $1, TRUE); type = get_type(hlsl_ctx.cur_scope, $1, TRUE);
$$ = type; $$ = type;
d3dcompiler_free($1); d3dcompiler_free($1);
@ -1409,7 +1433,6 @@ base_type: KW_VOID
{ {
struct hlsl_type *type; struct hlsl_type *type;
TRACE("Struct type %s.\n", $2);
type = get_type(hlsl_ctx.cur_scope, $2, TRUE); type = get_type(hlsl_ctx.cur_scope, $2, TRUE);
if (type->type != HLSL_CLASS_STRUCT) if (type->type != HLSL_CLASS_STRUCT)
{ {
@ -1850,7 +1873,7 @@ postfix_expr: primary_expr
} }
operands[0] = $1; operands[0] = $1;
operands[1] = operands[2] = NULL; operands[1] = operands[2] = NULL;
$$ = &new_expr(HLSL_IR_BINOP_POSTINC, operands, &loc)->node; $$ = &new_expr(HLSL_IR_UNOP_POSTINC, operands, &loc)->node;
/* Post increment/decrement expressions are considered const */ /* Post increment/decrement expressions are considered const */
$$->data_type = clone_hlsl_type($$->data_type); $$->data_type = clone_hlsl_type($$->data_type);
$$->data_type->modifiers |= HLSL_MODIFIER_CONST; $$->data_type->modifiers |= HLSL_MODIFIER_CONST;
@ -1869,7 +1892,7 @@ postfix_expr: primary_expr
} }
operands[0] = $1; operands[0] = $1;
operands[1] = operands[2] = NULL; operands[1] = operands[2] = NULL;
$$ = &new_expr(HLSL_IR_BINOP_POSTDEC, operands, &loc)->node; $$ = &new_expr(HLSL_IR_UNOP_POSTDEC, operands, &loc)->node;
/* Post increment/decrement expressions are considered const */ /* Post increment/decrement expressions are considered const */
$$->data_type = clone_hlsl_type($$->data_type); $$->data_type = clone_hlsl_type($$->data_type);
$$->data_type->modifiers |= HLSL_MODIFIER_CONST; $$->data_type->modifiers |= HLSL_MODIFIER_CONST;
@ -2042,7 +2065,7 @@ unary_expr: postfix_expr
} }
operands[0] = $2; operands[0] = $2;
operands[1] = operands[2] = NULL; operands[1] = operands[2] = NULL;
$$ = &new_expr(HLSL_IR_BINOP_PREINC, operands, &loc)->node; $$ = &new_expr(HLSL_IR_UNOP_PREINC, operands, &loc)->node;
} }
| OP_DEC unary_expr | OP_DEC unary_expr
{ {
@ -2058,7 +2081,7 @@ unary_expr: postfix_expr
} }
operands[0] = $2; operands[0] = $2;
operands[1] = operands[2] = NULL; operands[1] = operands[2] = NULL;
$$ = &new_expr(HLSL_IR_BINOP_PREDEC, operands, &loc)->node; $$ = &new_expr(HLSL_IR_UNOP_PREDEC, operands, &loc)->node;
} }
| unary_op unary_expr | unary_op unary_expr
{ {

View file

@ -800,31 +800,6 @@ void free_declaration(struct hlsl_ir_var *decl)
d3dcompiler_free(decl); d3dcompiler_free(decl);
} }
BOOL add_func_parameter(struct list *list, struct parse_parameter *param, const struct source_location *loc)
{
struct hlsl_ir_var *decl = d3dcompiler_alloc(sizeof(*decl));
if (!decl)
{
ERR("Out of memory.\n");
return FALSE;
}
decl->node.type = HLSL_IR_VAR;
decl->node.data_type = param->type;
decl->node.loc = *loc;
decl->name = param->name;
decl->semantic = param->semantic;
decl->modifiers = param->modifiers;
if (!add_declaration(hlsl_ctx.cur_scope, decl, FALSE))
{
free_declaration(decl);
return FALSE;
}
list_add_tail(list, &decl->node.entry);
return TRUE;
}
struct hlsl_type *new_hlsl_type(const char *name, enum hlsl_type_class type_class, struct hlsl_type *new_hlsl_type(const char *name, enum hlsl_type_class type_class,
enum hlsl_base_type base_type, unsigned dimx, unsigned dimy) enum hlsl_base_type base_type, unsigned dimx, unsigned dimy)
{ {
@ -1969,7 +1944,7 @@ const char *debug_modifiers(DWORD modifiers)
static const char *debug_node_type(enum hlsl_ir_node_type type) static const char *debug_node_type(enum hlsl_ir_node_type type)
{ {
const char *names[] = static const char * const names[] =
{ {
"HLSL_IR_VAR", "HLSL_IR_VAR",
"HLSL_IR_ASSIGNMENT", "HLSL_IR_ASSIGNMENT",
@ -2075,7 +2050,7 @@ static void debug_dump_ir_constant(const struct hlsl_ir_constant *constant)
static const char *debug_expr_op(const struct hlsl_ir_expr *expr) static const char *debug_expr_op(const struct hlsl_ir_expr *expr)
{ {
static const char *op_names[] = static const char * const op_names[] =
{ {
"~", "~",
"!", "!",

View file

@ -30,7 +30,7 @@ The following libraries are shared with Wine.
reactos/dll/directx/wine/amstream # Synced to Wine-1.7.27 reactos/dll/directx/wine/amstream # Synced to Wine-1.7.27
reactos/dll/directx/wine/d3d8 # Synced to Wine-1.7.27 reactos/dll/directx/wine/d3d8 # Synced to Wine-1.7.27
reactos/dll/directx/wine/d3d9 # Synced to Wine-1.7.27 reactos/dll/directx/wine/d3d9 # Synced to Wine-1.7.27
reactos/dll/directx/wine/d3dcompiler_43 # Synced to Wine-1.7.17 reactos/dll/directx/wine/d3dcompiler_43 # Synced to Wine-1.7.27
reactos/dll/directx/wine/d3dx9_24 => 43 # Synced to Wine-1.7.17 reactos/dll/directx/wine/d3dx9_24 => 43 # Synced to Wine-1.7.17
reactos/dll/directx/wine/d3dxof # Synced to Wine-1.7.17 reactos/dll/directx/wine/d3dxof # Synced to Wine-1.7.17
reactos/dll/directx/wine/ddraw # Synced to Wine-1.7.27 reactos/dll/directx/wine/ddraw # Synced to Wine-1.7.27