mesa: support for GL_ARB_fragment_coord_conventions

Signed-off-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Luca Barbieri
2010-01-20 22:38:39 -08:00
committed by Brian Paul
parent 1ca2285511
commit e59353f592
5 changed files with 20 additions and 0 deletions

View File

@@ -50,6 +50,7 @@ static const struct {
{ OFF, "GL_ARB_depth_clamp", F(ARB_depth_clamp) }, { OFF, "GL_ARB_depth_clamp", F(ARB_depth_clamp) },
{ ON, "GL_ARB_draw_buffers", F(ARB_draw_buffers) }, { ON, "GL_ARB_draw_buffers", F(ARB_draw_buffers) },
{ OFF, "GL_ARB_draw_elements_base_vertex", F(ARB_draw_elements_base_vertex) }, { OFF, "GL_ARB_draw_elements_base_vertex", F(ARB_draw_elements_base_vertex) },
{ OFF, "GL_ARB_fragment_coord_conventions", F(ARB_fragment_coord_conventions) },
{ OFF, "GL_ARB_fragment_program", F(ARB_fragment_program) }, { OFF, "GL_ARB_fragment_program", F(ARB_fragment_program) },
{ OFF, "GL_ARB_fragment_program_shadow", F(ARB_fragment_program_shadow) }, { OFF, "GL_ARB_fragment_program_shadow", F(ARB_fragment_program_shadow) },
{ OFF, "GL_ARB_fragment_shader", F(ARB_fragment_shader) }, { OFF, "GL_ARB_fragment_shader", F(ARB_fragment_shader) },

View File

@@ -1762,6 +1762,8 @@ struct gl_fragment_program
struct gl_program Base; /**< base class */ struct gl_program Base; /**< base class */
GLenum FogOption; GLenum FogOption;
GLboolean UsesKill; /**< shader uses KIL instruction */ GLboolean UsesKill; /**< shader uses KIL instruction */
GLboolean OriginUpperLeft;
GLboolean PixelCenterInteger;
}; };
@@ -2395,6 +2397,7 @@ struct gl_extensions
GLboolean ARB_depth_clamp; GLboolean ARB_depth_clamp;
GLboolean ARB_draw_buffers; GLboolean ARB_draw_buffers;
GLboolean ARB_draw_elements_base_vertex; GLboolean ARB_draw_elements_base_vertex;
GLboolean ARB_fragment_coord_conventions;
GLboolean ARB_fragment_program; GLboolean ARB_fragment_program;
GLboolean ARB_fragment_program_shadow; GLboolean ARB_fragment_program_shadow;
GLboolean ARB_fragment_shader; GLboolean ARB_fragment_shader;

View File

@@ -123,6 +123,8 @@ _mesa_parse_arb_fragment_program(GLcontext* ctx, GLenum target,
case OPTION_FOG_LINEAR: program->FogOption = GL_LINEAR; break; case OPTION_FOG_LINEAR: program->FogOption = GL_LINEAR; break;
default: program->FogOption = GL_NONE; break; default: program->FogOption = GL_NONE; break;
} }
program->OriginUpperLeft = state.option.OriginUpperLeft;
program->PixelCenterInteger = state.option.PixelCenterInteger;
program->UsesKill = state.fragment.UsesKill; program->UsesKill = state.fragment.UsesKill;

View File

@@ -216,6 +216,18 @@ _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option)
state->option.Shadow = 1; state->option.Shadow = 1;
return 1; return 1;
} }
} else if (strncmp(option, "fragment_coord_", 15) == 0) {
option += 15;
if (state->ctx->Extensions.ARB_fragment_coord_conventions) {
if (strcmp(option, "origin_upper_left") == 0) {
state->option.OriginUpperLeft = 1;
return 1;
}
else if (strcmp(option, "pixel_center_integer") == 0) {
state->option.PixelCenterInteger = 1;
return 1;
}
}
} }
} else if (strncmp(option, "NV_fragment_program", 19) == 0) { } else if (strncmp(option, "NV_fragment_program", 19) == 0) {
option += 19; option += 19;

View File

@@ -209,6 +209,8 @@ struct asm_parser_state {
unsigned TexRect:1; unsigned TexRect:1;
unsigned TexArray:1; unsigned TexArray:1;
unsigned NV_fragment:1; unsigned NV_fragment:1;
unsigned OriginUpperLeft:1;
unsigned PixelCenterInteger:1;
} option; } option;
struct { struct {