Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
efec8bb3
Commit
efec8bb3
authored
May 13, 2010
by
Matteo Bruni
Committed by
Alexandre Julliard
May 13, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3dx9: Complete output dcl instruction support.
parent
b627d13e
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
224 additions
and
3 deletions
+224
-3
asmshader.l
dlls/d3dx9_36/asmshader.l
+117
-0
asmshader.y
dlls/d3dx9_36/asmshader.y
+91
-0
d3dx9_36_private.h
dlls/d3dx9_36/d3dx9_36_private.h
+13
-0
asm.c
dlls/d3dx9_36/tests/asm.c
+3
-3
No files found.
dlls/d3dx9_36/asmshader.l
View file @
efec8bb3
...
...
@@ -67,6 +67,19 @@ REG_PREDICATE p0
REG_LABEL l[0-9]+
DCL_POSITION _position[0-9]*
DCL_BLENDWEIGHT _blendweight[0-9]*
DCL_BLENDINDICES _blendindices[0-9]*
DCL_NORMAL _normal[0-9]*
DCL_PSIZE _psize[0-9]*
DCL_TEXCOORD _texcoord[0-9]*
DCL_TANGENT _tangent[0-9]*
DCL_BINORMAL _binormal[0-9]*
DCL_TESSFACTOR _tessfactor[0-9]*
DCL_POSITIONT _positiont[0-9]*
DCL_COLOR _color[0-9]*
DCL_FOG _fog[0-9]*
DCL_DEPTH _depth[0-9]*
DCL_SAMPLE _sample[0-9]*
PREPROCESSORDIRECTIVE #[^\n]*\n
...
...
@@ -282,6 +295,110 @@ ps_3_0 {return VER_PS30; }
}
return USAGE_POSITION;
}
{DCL_BLENDWEIGHT} {
if(yytext[strlen("_blendweight")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_blendweight"));
}
return USAGE_BLENDWEIGHT;
}
{DCL_BLENDINDICES} {
if(yytext[strlen("_blendindices")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_blendindices"));
}
return USAGE_BLENDINDICES;
}
{DCL_NORMAL} {
if(yytext[strlen("_normal")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_normal"));
}
return USAGE_NORMAL;
}
{DCL_PSIZE} {
if(yytext[strlen("_psize")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_psize"));
}
return USAGE_PSIZE;
}
{DCL_TEXCOORD} {
if(yytext[strlen("_texcoord")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_texcoord"));
}
return USAGE_TEXCOORD;
}
{DCL_TANGENT} {
if(yytext[strlen("_tangent")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_tangent"));
}
return USAGE_TANGENT;
}
{DCL_BINORMAL} {
if(yytext[strlen("_binormal")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_binormal"));
}
return USAGE_BINORMAL;
}
{DCL_TESSFACTOR} {
if(yytext[strlen("_tessfactor")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_tessfactor"));
}
return USAGE_TESSFACTOR;
}
{DCL_POSITIONT} {
if(yytext[strlen("_positiont")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_positiont"));
}
return USAGE_POSITIONT;
}
{DCL_COLOR} {
if(yytext[strlen("_color")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_color"));
}
return USAGE_COLOR;
}
{DCL_FOG} {
if(yytext[strlen("_fog")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_fog"));
}
return USAGE_FOG;
}
{DCL_DEPTH} {
if(yytext[strlen("_depth")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_depth"));
}
return USAGE_DEPTH;
}
{DCL_SAMPLE} {
if(yytext[strlen("_sample")] == '\0') {
asmshader_lval.regnum = 0;
} else {
asmshader_lval.regnum = atoi(yytext + strlen("_sample"));
}
return USAGE_SAMPLE;
}
{PREPROCESSORDIRECTIVE} {
/* TODO: update current line information */
...
...
dlls/d3dx9_36/asmshader.y
View file @
efec8bb3
...
...
@@ -200,6 +200,19 @@ void set_rel_reg(struct shader_reg *reg, struct rel_reg *rel) {
/* Usage declaration tokens */
%token <regnum> USAGE_POSITION
%token <regnum> USAGE_BLENDWEIGHT
%token <regnum> USAGE_BLENDINDICES
%token <regnum> USAGE_NORMAL
%token <regnum> USAGE_PSIZE
%token <regnum> USAGE_TEXCOORD
%token <regnum> USAGE_TANGENT
%token <regnum> USAGE_BINORMAL
%token <regnum> USAGE_TESSFACTOR
%token <regnum> USAGE_POSITIONT
%token <regnum> USAGE_COLOR
%token <regnum> USAGE_FOG
%token <regnum> USAGE_DEPTH
%token <regnum> USAGE_SAMPLE
/* Misc stuff */
%token <component> COMPONENT
...
...
@@ -1080,6 +1093,84 @@ dclusage: USAGE_POSITION
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_POSITION;
}
| USAGE_BLENDWEIGHT
{
TRACE("dcl_blendweight%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_BLENDWEIGHT;
}
| USAGE_BLENDINDICES
{
TRACE("dcl_blendindices%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_BLENDINDICES;
}
| USAGE_NORMAL
{
TRACE("dcl_normal%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_NORMAL;
}
| USAGE_PSIZE
{
TRACE("dcl_psize%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_PSIZE;
}
| USAGE_TEXCOORD
{
TRACE("dcl_texcoord%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_TEXCOORD;
}
| USAGE_TANGENT
{
TRACE("dcl_tangent%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_TANGENT;
}
| USAGE_BINORMAL
{
TRACE("dcl_binormal%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_BINORMAL;
}
| USAGE_TESSFACTOR
{
TRACE("dcl_tessfactor%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_TESSFACTOR;
}
| USAGE_POSITIONT
{
TRACE("dcl_positiont%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_POSITIONT;
}
| USAGE_COLOR
{
TRACE("dcl_color%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_COLOR;
}
| USAGE_FOG
{
TRACE("dcl_fog%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_FOG;
}
| USAGE_DEPTH
{
TRACE("dcl_depth%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_DEPTH;
}
| USAGE_SAMPLE
{
TRACE("dcl_sample%u\n", $1);
$$.regnum = $1;
$$.dclusage = BWRITERDECLUSAGE_SAMPLE;
}
predicate: '(' REG_PREDICATE swizzle ')'
{
...
...
dlls/d3dx9_36/d3dx9_36_private.h
View file @
efec8bb3
...
...
@@ -520,6 +520,19 @@ typedef enum _BWRITERSHADER_PARAM_SRCMOD_TYPE {
typedef
enum
_BWRITERDECLUSAGE
{
BWRITERDECLUSAGE_POSITION
,
BWRITERDECLUSAGE_BLENDWEIGHT
,
BWRITERDECLUSAGE_BLENDINDICES
,
BWRITERDECLUSAGE_NORMAL
,
BWRITERDECLUSAGE_PSIZE
,
BWRITERDECLUSAGE_TEXCOORD
,
BWRITERDECLUSAGE_TANGENT
,
BWRITERDECLUSAGE_BINORMAL
,
BWRITERDECLUSAGE_TESSFACTOR
,
BWRITERDECLUSAGE_POSITIONT
,
BWRITERDECLUSAGE_COLOR
,
BWRITERDECLUSAGE_FOG
,
BWRITERDECLUSAGE_DEPTH
,
BWRITERDECLUSAGE_SAMPLE
}
BWRITERDECLUSAGE
;
struct
bwriter_shader
*
SlAssembleShader
(
const
char
*
text
,
char
**
messages
);
...
...
dlls/d3dx9_36/tests/asm.c
View file @
efec8bb3
...
...
@@ -1028,11 +1028,11 @@ static void vs_3_0_test(void) {
"dcl_position o0
\n
"
,
{
0xfffe0300
,
0x0200001f
,
0x80000000
,
0xe00f0000
,
0x0000ffff
}
},
/* {*/
/* shader 3 */
/*
"vs_3_0\n"
{
/* shader 3 */
"vs_3_0
\n
"
"dcl_texcoord12 o11
\n
"
,
{
0xfffe0300
,
0x0200001f
,
0x800c0005
,
0xe00f000b
,
0x0000ffff
}
},
*/
},
{
/* shader 4 */
"vs_3_0
\n
"
"texldl r0, v0, s0
\n
"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment