Tobias Jakobi : wined3d: Add arb_ps_np2fixup_info structure and improve structure packing for arb_ps_compiled_shader .
Alexandre Julliard
julliard at winehq.org
Thu Jul 2 08:25:08 CDT 2009
Module: wine
Branch: master
Commit: ec30e9a85e17b87f8d6c3f3df9421a22ba3bdbe0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ec30e9a85e17b87f8d6c3f3df9421a22ba3bdbe0
Author: Tobias Jakobi <liquid.acid at gmx.net>
Date: Wed Jul 1 18:36:46 2009 +0200
wined3d: Add arb_ps_np2fixup_info structure and improve structure packing for arb_ps_compiled_shader.
---
dlls/wined3d/arb_program_shader.c | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 66a7634..b9e5e82 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -115,6 +115,16 @@ struct control_frame
BOOL had_else;
};
+struct arb_ps_np2fixup_info
+{
+ struct ps_np2fixup_info super;
+ /* For ARB we need a offset value:
+ * With both GLSL and ARB mode the NP2 fixup information (the texture dimensions) are stored in a
+ * consecutive way (GLSL uses a uniform array). Since ARB doesn't know the notion of a "standalone"
+ * array we need an offset to the index inside the program local parameter array. */
+ UINT offset;
+};
+
struct arb_ps_compile_args
{
struct ps_compile_args super;
@@ -131,13 +141,14 @@ struct stb_const_desc
struct arb_ps_compiled_shader
{
struct arb_ps_compile_args args;
- GLuint prgId;
+ struct arb_ps_np2fixup_info np2fixup_info;
struct stb_const_desc bumpenvmatconst[MAX_TEXTURES];
- unsigned char numbumpenvmatconsts;
struct stb_const_desc luminanceconst[MAX_TEXTURES];
UINT int_consts[MAX_CONST_I];
- char num_int_consts;
+ GLuint prgId;
UINT ycorrection;
+ unsigned char numbumpenvmatconsts;
+ char num_int_consts;
};
struct arb_vs_compile_args
@@ -194,6 +205,7 @@ struct shader_arb_ctx_priv
const struct arb_ps_compile_args *cur_ps_args;
const struct arb_ps_compiled_shader *compiled_fprog;
const struct arb_vs_compiled_shader *compiled_vprog;
+ struct arb_ps_np2fixup_info *cur_np2fixup_info;
struct list control_frames;
struct list record;
BOOL recording;
@@ -3191,6 +3203,7 @@ static GLuint shader_arb_generate_pshader(IWineD3DPixelShaderImpl *This,
memset(&priv_ctx, 0, sizeof(priv_ctx));
priv_ctx.cur_ps_args = args;
priv_ctx.compiled_fprog = compiled;
+ priv_ctx.cur_np2fixup_info = &compiled->np2fixup_info;
init_ps_input(This, args, &priv_ctx);
list_init(&priv_ctx.control_frames);
More information about the wine-cvs
mailing list