Tobias Jakobi : wined3d: Add texrect_fixup bitfield to ps_compile_args struct.
Alexandre Julliard
julliard at winehq.org
Tue Mar 31 12:19:21 CDT 2009
Module: wine
Branch: master
Commit: 1b335dfaaa8fc2f2a45c5979beecaae84e019ae3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1b335dfaaa8fc2f2a45c5979beecaae84e019ae3
Author: Tobias Jakobi <liquid.acid at gmx.net>
Date: Thu Mar 26 03:15:21 2009 +0100
wined3d: Add texrect_fixup bitfield to ps_compile_args struct.
Initialization of the bitfield done in find_ps_compile_args
based on the previously introduced pow2Matrix_identity flag.
---
dlls/wined3d/pixelshader.c | 6 ++++++
dlls/wined3d/wined3d_private.h | 6 +++++-
2 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index a974ca5..de609a7 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -460,6 +460,7 @@ void find_ps_compile_args(IWineD3DPixelShaderImpl *shader, IWineD3DStateBlockImp
memset(args, 0, sizeof(*args)); /* FIXME: Make sure all bits are set */
args->srgb_correction = stateblock->renderState[WINED3DRS_SRGBWRITEENABLE] ? 1 : 0;
+ args->texrect_fixup = 0;
for(i = 0; i < MAX_FRAGMENT_SAMPLERS; i++) {
if(shader->baseShader.reg_maps.samplers[i] == 0) continue;
@@ -469,6 +470,11 @@ void find_ps_compile_args(IWineD3DPixelShaderImpl *shader, IWineD3DStateBlockImp
continue;
}
args->color_fixup[i] = tex->resource.format_desc->color_fixup;
+
+ /* Flag samplers that need NP2 texcoord fixup. */
+ if(!tex->baseTexture.pow2Matrix_identity) {
+ args->texrect_fixup |= (1 << i);
+ }
}
if (shader->baseShader.reg_maps.shader_version >= WINED3DPS_VERSION(3,0))
{
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index abab9dc..8907b0f 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -446,11 +446,15 @@ enum fogmode {
*/
struct ps_compile_args {
struct color_fixup_desc color_fixup[MAX_FRAGMENT_SAMPLERS];
- BOOL srgb_correction;
enum vertexprocessing_mode vp_mode;
enum fogmode fog;
/* Projected textures(ps 1.0-1.3) */
/* Texture types(2D, Cube, 3D) in ps 1.x */
+ BOOL srgb_correction;
+ WORD texrect_fixup;
+ /* Bitmap for texture rect coord fixups (16 samplers max currently).
+ D3D9 has a limit of 16 samplers and the fixup is superfluous
+ in D3D10 (unconditional NP2 support mandatory). */
};
#define MAX_ATTRIBS 16
More information about the wine-cvs
mailing list