Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
8e45e48b
Commit
8e45e48b
authored
May 08, 2009
by
Stefan Dösinger
Committed by
Alexandre Julliard
May 21, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Support vec4 A0 with NV_vertex_program2_option.
parent
d0756ee5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
8 deletions
+13
-8
arb_program_shader.c
dlls/wined3d/arb_program_shader.c
+13
-8
No files found.
dlls/wined3d/arb_program_shader.c
View file @
8e45e48b
...
...
@@ -45,8 +45,7 @@ WINE_DECLARE_DEBUG_CHANNEL(d3d);
static
BOOL
need_mova_const
(
IWineD3DBaseShader
*
shader
,
const
WineD3D_GL_Info
*
gl_info
)
{
IWineD3DBaseShaderImpl
*
This
=
(
IWineD3DBaseShaderImpl
*
)
shader
;
if
(
!
This
->
baseShader
.
reg_maps
.
usesmova
)
return
FALSE
;
/* TODO: ARR from GL_NV_vertex_program2_option */
return
TRUE
;
return
!
GL_SUPPORT
(
NV_VERTEX_PROGRAM2_OPTION
);
}
static
BOOL
need_helper_const
(
const
WineD3D_GL_Info
*
gl_info
)
{
...
...
@@ -536,6 +535,7 @@ static void shader_arb_get_register_name(const struct wined3d_shader_instruction
static
const
char
*
const
rastout_reg_names
[]
=
{
"TMP_OUT"
,
"result.fogcoord"
,
"result.pointsize"
};
IWineD3DBaseShaderImpl
*
This
=
(
IWineD3DBaseShaderImpl
*
)
ins
->
ctx
->
shader
;
BOOL
pshader
=
shader_is_pshader_version
(
This
->
baseShader
.
reg_maps
.
shader_version
.
type
);
struct
shader_arb_ctx_priv
*
ctx
=
ins
->
ctx
->
backend_data
;
*
is_color
=
FALSE
;
...
...
@@ -567,9 +567,10 @@ static void shader_arb_get_register_name(const struct wined3d_shader_instruction
sprintf
(
rel_reg
,
"A0.x"
);
}
else
{
shader_arb_get_src_param
(
ins
,
reg
->
rel_addr
,
0
,
rel_reg
);
/* FIXME: GL_NV_vertex_progam2_option */
shader_arb_request_a0
(
ins
,
rel_reg
);
sprintf
(
rel_reg
,
"A0.x"
);
if
(
ctx
->
target_version
==
ARB
)
{
shader_arb_request_a0
(
ins
,
rel_reg
);
sprintf
(
rel_reg
,
"A0.x"
);
}
}
if
(
reg
->
idx
>=
rel_offset
)
sprintf
(
register_name
,
"C[%s + %u]"
,
rel_reg
,
reg
->
idx
-
rel_offset
);
...
...
@@ -601,7 +602,7 @@ static void shader_arb_get_register_name(const struct wined3d_shader_instruction
}
else
{
if
(
This
->
baseShader
.
reg_maps
.
shader_version
.
major
==
1
)
if
(
This
->
baseShader
.
reg_maps
.
shader_version
.
major
==
1
||
ctx
->
target_version
>=
NV2
)
{
sprintf
(
register_name
,
"A%u"
,
reg
->
idx
);
}
...
...
@@ -1036,6 +1037,7 @@ static void shader_hw_map2gl(const struct wined3d_shader_instruction *ins)
case
WINED3DSIH_SGE
:
instruction
=
"SGE"
;
break
;
case
WINED3DSIH_SLT
:
instruction
=
"SLT"
;
break
;
case
WINED3DSIH_SUB
:
instruction
=
"SUB"
;
break
;
case
WINED3DSIH_MOVA
:
instruction
=
"ARR"
;
break
;
default:
instruction
=
""
;
FIXME
(
"Unhandled opcode %#x
\n
"
,
ins
->
handler_idx
);
break
;
...
...
@@ -1068,9 +1070,14 @@ static void shader_hw_mov(const struct wined3d_shader_instruction *ins)
char
src0_param
[
256
];
if
(
ins
->
handler_idx
==
WINED3DSIH_MOVA
)
{
struct
shader_arb_ctx_priv
*
ctx
=
ins
->
ctx
->
backend_data
;
struct
wined3d_shader_src_param
tmp_src
=
ins
->
src
[
0
];
char
write_mask
[
6
];
if
(
ctx
->
target_version
>=
NV2
)
{
shader_hw_map2gl
(
ins
);
return
;
}
tmp_src
.
swizzle
=
(
tmp_src
.
swizzle
&
0x3
)
*
0x55
;
shader_arb_get_src_param
(
ins
,
&
tmp_src
,
0
,
src0_param
);
shader_arb_get_write_mask
(
ins
,
&
ins
->
dst
[
0
],
write_mask
);
...
...
@@ -1084,8 +1091,6 @@ static void shader_hw_mov(const struct wined3d_shader_instruction *ins)
*
* The ARL is performed when A0 is used - the requested component is read from A0_SHADOW into
* A0.x. We can use the overwritten component of A0_shadow as temporary storage for the sign.
*
* TODO: ARR from GL_NV_vertex_program2_option
*/
shader_addline
(
buffer
,
"SGE A0_SHADOW%s, %s, mova_const.y;
\n
"
,
write_mask
,
src0_param
);
shader_addline
(
buffer
,
"MAD A0_SHADOW%s, A0_SHADOW, mova_const.z, -mova_const.w;
\n
"
,
write_mask
);
...
...
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