[WINED3D 1/8] Place number of textures/addresses and temps used
inside the baseShader struct to prepare for merging of
GenerateShader routine.
Jason Green
jave27 at gmail.com
Fri May 5 10:29:15 CDT 2006
The following 8 patches apply to Mike's tree and accomplish the following:
- Create a new function in baseshader named generate_base_shader()
which generates the bulk of the GL ARB shader string.
- Renames the GenerateProgramArbHW() in both ps & vs to
GenerateShader() and minimizes the number of specific things that need
to go in them.
- Standardizes the outputted TRACE strings between both pixel and
vertex shaders for the d3d_shader channel.
- Re-arranges the order of declarations at the top of the shader
string which doesn't matter, but is needed in order to succesfully
merge the two functions.
This entire patchset from a functionality standpoint is a no-op, but
the TRACE lines will change a bit (for the better).
-------------- next part --------------
Subject: [PATCH 1/8] Place number of textures/addresses and temps used inside the baseShader struct to prepare for merging of GenerateShader routine.
---
dlls/wined3d/baseshader.c | 8 +++++---
dlls/wined3d/pixelshader.c | 5 ++++-
dlls/wined3d/vertexshader.c | 5 ++++-
dlls/wined3d/wined3d_private.h | 6 +++---
4 files changed, 16 insertions(+), 8 deletions(-)
d28ffdc13be6b0ee3fb29e30d940e45d0291acd4
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index 2eb1d3c..4fbfaf5 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -96,9 +96,11 @@ const SHADER_OPCODE* shader_get_opcode(
void shader_get_registers_used(
IWineD3DBaseShader *iface,
- CONST DWORD* pToken,
- DWORD* tempsUsed,
- DWORD* texUsed) {
+ CONST DWORD* pToken) {
+
+ IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
+ DWORD* tempsUsed = &This->baseShader.temps_used;
+ DWORD* texUsed = &This->baseShader.textures_used;
if (pToken == NULL)
return;
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index 191866d..0692543 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -1337,7 +1337,10 @@ inline static VOID IWineD3DPixelShaderIm
This->constants[i] = 0;
/* First pass: figure out which temporary and texture registers are used */
- shader_get_registers_used((IWineD3DBaseShader*) This, pToken, &tempsUsed, &texUsed);
+ shader_get_registers_used((IWineD3DBaseShader*) This, pToken);
+ texUsed = This->baseShader.textures_used;
+ tempsUsed = This->baseShader.temps_used;
+
TRACE("Texture registers used: %#lx, Temp registers used %#lx\n", texUsed, tempsUsed);
/* TODO: check register usage against GL/Directx limits, and fail if they're exceeded */
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 04beabc..42d64a4 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -1153,7 +1153,10 @@ inline static VOID IWineD3DVertexShaderI
buffer.lineNo = 0;
/* First pass: figure out which temporary and texture registers are used */
- shader_get_registers_used((IWineD3DBaseShader*) This, pToken, &tempsUsed, &addressUsed);
+ shader_get_registers_used((IWineD3DBaseShader*) This, pToken);
+ addressUsed = This->baseShader.textures_used;
+ tempsUsed = This->baseShader.temps_used;
+
TRACE("Address registers used: %#lx, Temp registers used %#lx\n", addressUsed, tempsUsed);
/* TODO: check register usage against GL/Directx limits, and fail if they're exceeded
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 126883a..674f17b 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1243,9 +1243,7 @@ extern const SHADER_OPCODE* shader_get_o
extern void shader_get_registers_used(
IWineD3DBaseShader *iface,
- CONST DWORD* pToken,
- DWORD* tempsUsed,
- DWORD* texUsed);
+ CONST DWORD* pToken);
extern void shader_program_dump_decl_usage(
DWORD dcl,
@@ -1266,6 +1264,8 @@ typedef struct IWineD3DBaseShaderClass
{
DWORD version;
DWORD hex_version;
+ DWORD temps_used;
+ DWORD textures_used;
SHADER_LIMITS limits;
SHADER_PARSE_STATE parse_state;
CONST SHADER_OPCODE *shader_ins;
--
1.1.3
More information about the wine-patches
mailing list