Simplify generate_base_shader() when checking for USING_GLSL usage.
Jason Green
jave27 at gmail.com
Thu May 18 12:43:32 CDT 2006
Just makes the function more readable and has fewer USING_GLSL checks.
-------------- next part --------------
Subject: [PATCH 2/3] Simplify generate_base_shader() when checking for GLSL usage.
Reduce the number of checks against USING_GLSL.
---
dlls/wined3d/baseshader.c | 29 ++++++++---------------------
1 files changed, 8 insertions(+), 21 deletions(-)
060521fb3909e0c99fab6cc36f5a75124e1e9680
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index 98fa795..6629d58 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -551,6 +551,7 @@ void generate_base_shader(
IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
const DWORD *pToken = pFunction;
const SHADER_OPCODE *curOpcode = NULL;
+ SHADER_HANDLER hw_fct = NULL;
DWORD opcode_token;
DWORD i;
@@ -568,10 +569,12 @@ void generate_base_shader(
*/
/* Pre-declare registers */
- if (USING_GLSL)
+ if (USING_GLSL) {
generate_glsl_declarations(iface, buffer);
- else
+ shader_addline(buffer, "void main() {\n");
+ } else {
generate_arb_declarations(iface, buffer);
+ }
/* Second pass, process opcodes */
if (NULL != pToken) {
@@ -595,28 +598,15 @@ void generate_base_shader(
/* Read opcode */
opcode_token = *pToken++;
curOpcode = shader_get_opcode(iface, opcode_token);
+ hw_fct = USING_GLSL ? curOpcode->hw_glsl_fct : curOpcode->hw_fct;
/* Unknown opcode and its parameters */
if (NULL == curOpcode) {
FIXME("Unrecognized opcode: token=%08lX\n", opcode_token);
pToken += shader_skip_unrecognized(iface, pToken);
- /* Using GLSL & no generator function exists */
- } else if (USING_GLSL && curOpcode->hw_glsl_fct == NULL) {
-
- FIXME("Token %s is not yet implemented with GLSL\n", curOpcode->name);
- pToken += shader_skip_opcode(This, curOpcode, opcode_token);
-
- /* Unhandled opcode in ARB */
- } else if ( !USING_GLSL && GLNAME_REQUIRE_GLSL == curOpcode->glname) {
-
- FIXME("Token %s requires greater functionality than "
- "Vertex or Fragment_Program_ARB supports\n", curOpcode->name);
- pToken += shader_skip_opcode(This, curOpcode, opcode_token);
-
/* If a generator function is set for current shader target, use it */
- } else if ((!USING_GLSL && curOpcode->hw_fct != NULL) ||
- (USING_GLSL && curOpcode->hw_glsl_fct != NULL)) {
+ } else if (hw_fct != NULL) {
SHADER_OPCODE_ARG hw_arg;
@@ -656,10 +646,7 @@ void generate_base_shader(
}
/* Call appropriate function for output target */
- if (USING_GLSL)
- curOpcode->hw_glsl_fct(&hw_arg);
- else
- curOpcode->hw_fct(&hw_arg);
+ hw_fct(&hw_arg);
} else {
--
1.1.3
More information about the wine-patches
mailing list