mesa: support for GL_ARB_fragment_coord_conventions
Signed-off-by: Brian Paul <brianp@vmware.com>
This commit is contained in:

committed by
Brian Paul

parent
1ca2285511
commit
e59353f592
@@ -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) },
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user