mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-28 19:26:16 +00:00
[[MESA]
- leaner build part 6 of X - Get rid of the ARB_blend_func_extended, ARB_explicit_attrib_location, ARB_seamless_cube_map, ARB_texture_multisample extension EXT_provoking_vertex, EXT_vertex_array_bgra and AMD_seamless_cubemap_per_texture extensions #CORE-7499 svn path=/trunk/; revision=60505
This commit is contained in:
@@ -3498,9 +3498,6 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
|
||||
add_builtin_define(parser, "GL_ARB_fragment_coord_conventions",
|
||||
1);
|
||||
|
||||
if (extensions->ARB_explicit_attrib_location)
|
||||
add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1);
|
||||
|
||||
if (extensions->ARB_shader_texture_lod)
|
||||
add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1);
|
||||
|
||||
|
||||
@@ -2009,7 +2009,6 @@ YY_RULE_SETUP
|
||||
if ((yyextra->language_version >= 140)
|
||||
|| yyextra->AMD_conservative_depth_enable
|
||||
|| yyextra->ARB_conservative_depth_enable
|
||||
|| yyextra->ARB_explicit_attrib_location_enable
|
||||
|| yyextra->ARB_fragment_coord_conventions_enable) {
|
||||
return LAYOUT_TOK;
|
||||
} else {
|
||||
|
||||
@@ -4193,25 +4193,6 @@ yyreduce:
|
||||
|
||||
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
|
||||
|
||||
if (state->ARB_explicit_attrib_location_enable) {
|
||||
/* FINISHME: Handle 'index' once GL_ARB_blend_func_exteneded and
|
||||
* FINISHME: GLSL 1.30 (or later) are supported.
|
||||
*/
|
||||
if (strcmp("location", (yyvsp[(1) - (3)].identifier)) == 0) {
|
||||
got_one = true;
|
||||
|
||||
(yyval.type_qualifier).flags.q.explicit_location = 1;
|
||||
|
||||
if ((yyvsp[(3) - (3)].n) >= 0) {
|
||||
(yyval.type_qualifier).location = (yyvsp[(3) - (3)].n);
|
||||
} else {
|
||||
_mesa_glsl_error(& (yylsp[(3) - (3)]), state,
|
||||
"invalid location %d specified\n", (yyvsp[(3) - (3)].n));
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If the identifier didn't match any known layout identifiers,
|
||||
* emit an error.
|
||||
*/
|
||||
@@ -4219,10 +4200,6 @@ yyreduce:
|
||||
_mesa_glsl_error(& (yylsp[(1) - (3)]), state, "unrecognized layout identifier "
|
||||
"`%s'\n", (yyvsp[(1) - (3)].identifier));
|
||||
YYERROR;
|
||||
} else if (state->ARB_explicit_attrib_location_warn) {
|
||||
_mesa_glsl_warning(& (yylsp[(1) - (3)]), state,
|
||||
"GL_ARB_explicit_attrib_location layout "
|
||||
"identifier `%s' used\n", (yyvsp[(1) - (3)].identifier));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1991,10 +1991,6 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
|
||||
if (var->mode == ir_var_out)
|
||||
var->invariant = true;
|
||||
break;
|
||||
case geometry_shader:
|
||||
if ((var->mode == ir_var_in) || (var->mode == ir_var_out))
|
||||
var->invariant = true;
|
||||
break;
|
||||
case fragment_shader:
|
||||
if (var->mode == ir_var_in)
|
||||
var->invariant = true;
|
||||
@@ -2066,12 +2062,6 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
|
||||
}
|
||||
break;
|
||||
|
||||
case geometry_shader:
|
||||
_mesa_glsl_error(loc, state,
|
||||
"geometry shader variables cannot be given "
|
||||
"explicit locations\n");
|
||||
break;
|
||||
|
||||
case fragment_shader:
|
||||
if (!global_scope || (var->mode != ir_var_out)) {
|
||||
fail = true;
|
||||
@@ -2590,7 +2580,6 @@ ast_declarator_list::hir(exec_list *instructions,
|
||||
* that adds the 'layout' keyword.
|
||||
*/
|
||||
if ((state->language_version < 130)
|
||||
&& !state->ARB_explicit_attrib_location_enable
|
||||
&& !state->ARB_fragment_coord_conventions_enable) {
|
||||
if (this->type->qualifier.flags.q.out) {
|
||||
_mesa_glsl_error(& loc, state,
|
||||
|
||||
@@ -992,8 +992,6 @@ _mesa_glsl_initialize_variables(exec_list *instructions,
|
||||
case vertex_shader:
|
||||
initialize_vs_variables(instructions, state);
|
||||
break;
|
||||
case geometry_shader:
|
||||
break;
|
||||
case fragment_shader:
|
||||
initialize_fs_variables(instructions, state);
|
||||
break;
|
||||
|
||||
@@ -3448,9 +3448,6 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
|
||||
add_builtin_define(parser, "GL_ARB_fragment_coord_conventions",
|
||||
1);
|
||||
|
||||
if (extensions->ARB_explicit_attrib_location)
|
||||
add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1);
|
||||
|
||||
if (extensions->ARB_shader_texture_lod)
|
||||
add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1);
|
||||
|
||||
|
||||
@@ -2002,7 +2002,6 @@ YY_RULE_SETUP
|
||||
if ((yyextra->language_version >= 140)
|
||||
|| yyextra->AMD_conservative_depth_enable
|
||||
|| yyextra->ARB_conservative_depth_enable
|
||||
|| yyextra->ARB_explicit_attrib_location_enable
|
||||
|| yyextra->ARB_fragment_coord_conventions_enable) {
|
||||
return LAYOUT_TOK;
|
||||
} else {
|
||||
|
||||
@@ -4153,49 +4153,6 @@ yyreduce:
|
||||
;}
|
||||
break;
|
||||
|
||||
case 151:
|
||||
|
||||
/* Line 1464 of yacc.c */
|
||||
#line 1169 "glsl_parser.yy"
|
||||
{
|
||||
bool got_one = false;
|
||||
|
||||
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
|
||||
|
||||
if (state->ARB_explicit_attrib_location_enable) {
|
||||
/* FINISHME: Handle 'index' once GL_ARB_blend_func_exteneded and
|
||||
* FINISHME: GLSL 1.30 (or later) are supported.
|
||||
*/
|
||||
if (strcmp("location", (yyvsp[(1) - (3)].identifier)) == 0) {
|
||||
got_one = true;
|
||||
|
||||
(yyval.type_qualifier).flags.q.explicit_location = 1;
|
||||
|
||||
if ((yyvsp[(3) - (3)].n) >= 0) {
|
||||
(yyval.type_qualifier).location = (yyvsp[(3) - (3)].n);
|
||||
} else {
|
||||
_mesa_glsl_error(& (yylsp[(3) - (3)]), state,
|
||||
"invalid location %d specified\n", (yyvsp[(3) - (3)].n));
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If the identifier didn't match any known layout identifiers,
|
||||
* emit an error.
|
||||
*/
|
||||
if (!got_one) {
|
||||
_mesa_glsl_error(& (yylsp[(1) - (3)]), state, "unrecognized layout identifier "
|
||||
"`%s'\n", (yyvsp[(1) - (3)].identifier));
|
||||
YYERROR;
|
||||
} else if (state->ARB_explicit_attrib_location_warn) {
|
||||
_mesa_glsl_warning(& (yylsp[(1) - (3)]), state,
|
||||
"GL_ARB_explicit_attrib_location layout "
|
||||
"identifier `%s' used\n", (yyvsp[(1) - (3)].identifier));
|
||||
}
|
||||
;}
|
||||
break;
|
||||
|
||||
case 152:
|
||||
|
||||
/* Line 1464 of yacc.c */
|
||||
|
||||
@@ -42,7 +42,6 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *ctx,
|
||||
switch (target) {
|
||||
case GL_VERTEX_SHADER: this->target = vertex_shader; break;
|
||||
case GL_FRAGMENT_SHADER: this->target = fragment_shader; break;
|
||||
case GL_GEOMETRY_SHADER: this->target = geometry_shader; break;
|
||||
}
|
||||
|
||||
this->scanner = NULL;
|
||||
@@ -125,7 +124,6 @@ _mesa_glsl_shader_target_name(enum _mesa_glsl_parser_targets target)
|
||||
switch (target) {
|
||||
case vertex_shader: return "vertex";
|
||||
case fragment_shader: return "fragment";
|
||||
case geometry_shader: return "geometry";
|
||||
}
|
||||
|
||||
assert(!"Should not get here.");
|
||||
@@ -262,7 +260,6 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
|
||||
EXT(ARB_conservative_depth, false, false, true, true, false, ARB_conservative_depth),
|
||||
EXT(ARB_draw_buffers, false, false, true, true, false, dummy_true),
|
||||
EXT(ARB_draw_instanced, true, false, false, true, false, ARB_draw_instanced),
|
||||
EXT(ARB_explicit_attrib_location, true, false, true, true, false, ARB_explicit_attrib_location),
|
||||
EXT(ARB_fragment_coord_conventions, true, false, true, true, false, ARB_fragment_coord_conventions),
|
||||
EXT(ARB_texture_rectangle, true, false, true, true, false, dummy_true),
|
||||
EXT(EXT_texture_array, true, false, true, true, false, EXT_texture_array),
|
||||
@@ -293,11 +290,6 @@ bool _mesa_glsl_extension::compatible_with_state(const _mesa_glsl_parse_state *
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case geometry_shader:
|
||||
if (!this->avail_in_GS) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case fragment_shader:
|
||||
if (!this->avail_in_FS) {
|
||||
return false;
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
|
||||
enum _mesa_glsl_parser_targets {
|
||||
vertex_shader,
|
||||
geometry_shader,
|
||||
fragment_shader
|
||||
};
|
||||
|
||||
@@ -181,8 +180,6 @@ struct _mesa_glsl_parse_state {
|
||||
bool ARB_draw_buffers_warn;
|
||||
bool ARB_draw_instanced_enable;
|
||||
bool ARB_draw_instanced_warn;
|
||||
bool ARB_explicit_attrib_location_enable;
|
||||
bool ARB_explicit_attrib_location_warn;
|
||||
bool ARB_fragment_coord_conventions_enable;
|
||||
bool ARB_fragment_coord_conventions_warn;
|
||||
bool ARB_texture_rectangle_enable;
|
||||
|
||||
@@ -1619,19 +1619,17 @@ static bool
|
||||
check_resources(struct gl_context *ctx, struct gl_shader_program *prog)
|
||||
{
|
||||
static const char *const shader_names[MESA_SHADER_TYPES] = {
|
||||
"vertex", "fragment", "geometry"
|
||||
"vertex", "fragment"
|
||||
};
|
||||
|
||||
const unsigned max_samplers[MESA_SHADER_TYPES] = {
|
||||
ctx->Const.MaxVertexTextureImageUnits,
|
||||
ctx->Const.MaxTextureImageUnits,
|
||||
ctx->Const.MaxGeometryTextureImageUnits
|
||||
ctx->Const.MaxTextureImageUnits
|
||||
};
|
||||
|
||||
const unsigned max_uniform_components[MESA_SHADER_TYPES] = {
|
||||
ctx->Const.VertexProgram.MaxUniformComponents,
|
||||
ctx->Const.FragmentProgram.MaxUniformComponents,
|
||||
0 /* FINISHME: Geometry shaders. */
|
||||
ctx->Const.FragmentProgram.MaxUniformComponents
|
||||
};
|
||||
|
||||
for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
|
||||
@@ -1701,10 +1699,6 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
|
||||
frag_shader_list[num_frag_shaders] = prog->Shaders[i];
|
||||
num_frag_shaders++;
|
||||
break;
|
||||
case GL_GEOMETRY_SHADER:
|
||||
/* FINISHME: Support geometry shaders. */
|
||||
assert(prog->Shaders[i]->Type != GL_GEOMETRY_SHADER);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1854,20 +1848,6 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
|
||||
;
|
||||
}
|
||||
|
||||
if (prog->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
|
||||
gl_shader *const sh = prog->_LinkedShaders[MESA_SHADER_GEOMETRY];
|
||||
|
||||
demote_shader_inputs_and_outputs(sh, ir_var_in);
|
||||
demote_shader_inputs_and_outputs(sh, ir_var_inout);
|
||||
demote_shader_inputs_and_outputs(sh, ir_var_out);
|
||||
|
||||
/* Eliminate code that is now dead due to unused geometry outputs being
|
||||
* demoted.
|
||||
*/
|
||||
while (do_dead_code(prog->_LinkedShaders[MESA_SHADER_GEOMETRY]->ir, false))
|
||||
;
|
||||
}
|
||||
|
||||
if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL) {
|
||||
gl_shader *const sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ usage_fail(const char *name)
|
||||
{
|
||||
|
||||
const char *header =
|
||||
"usage: %s [options] <file.vert | file.geom | file.frag>\n"
|
||||
"usage: %s [options] <file.vert | file.frag>\n"
|
||||
"\n"
|
||||
"Possible options are:\n";
|
||||
printf(header, name, name);
|
||||
@@ -240,8 +240,6 @@ main(int argc, char **argv)
|
||||
const char *const ext = & argv[optind][len - 5];
|
||||
if (strncmp(".vert", ext, 5) == 0)
|
||||
shader->Type = GL_VERTEX_SHADER;
|
||||
else if (strncmp(".geom", ext, 5) == 0)
|
||||
shader->Type = GL_GEOMETRY_SHADER;
|
||||
else if (strncmp(".frag", ext, 5) == 0)
|
||||
shader->Type = GL_FRAGMENT_SHADER;
|
||||
else
|
||||
|
||||
@@ -129,7 +129,6 @@ struct save_state
|
||||
GLboolean FragmentProgramEnabled;
|
||||
struct gl_fragment_program *FragmentProgram;
|
||||
struct gl_shader_program *VertexShader;
|
||||
struct gl_shader_program *GeometryShader;
|
||||
struct gl_shader_program *FragmentShader;
|
||||
struct gl_shader_program *ActiveShader;
|
||||
|
||||
@@ -540,8 +539,6 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
|
||||
if (ctx->Extensions.ARB_shader_objects) {
|
||||
_mesa_reference_shader_program(ctx, &save->VertexShader,
|
||||
ctx->Shader.CurrentVertexProgram);
|
||||
_mesa_reference_shader_program(ctx, &save->GeometryShader,
|
||||
ctx->Shader.CurrentGeometryProgram);
|
||||
_mesa_reference_shader_program(ctx, &save->FragmentShader,
|
||||
ctx->Shader.CurrentFragmentProgram);
|
||||
_mesa_reference_shader_program(ctx, &save->ActiveShader,
|
||||
@@ -813,10 +810,6 @@ _mesa_meta_end(struct gl_context *ctx)
|
||||
if (ctx->Extensions.ARB_vertex_shader)
|
||||
_mesa_use_shader_program(ctx, GL_VERTEX_SHADER, save->VertexShader);
|
||||
|
||||
if (ctx->Extensions.ARB_geometry_shader4)
|
||||
_mesa_use_shader_program(ctx, GL_GEOMETRY_SHADER_ARB,
|
||||
save->GeometryShader);
|
||||
|
||||
if (ctx->Extensions.ARB_fragment_shader)
|
||||
_mesa_use_shader_program(ctx, GL_FRAGMENT_SHADER,
|
||||
save->FragmentShader);
|
||||
@@ -825,7 +818,6 @@ _mesa_meta_end(struct gl_context *ctx)
|
||||
save->ActiveShader);
|
||||
|
||||
_mesa_reference_shader_program(ctx, &save->VertexShader, NULL);
|
||||
_mesa_reference_shader_program(ctx, &save->GeometryShader, NULL);
|
||||
_mesa_reference_shader_program(ctx, &save->FragmentShader, NULL);
|
||||
_mesa_reference_shader_program(ctx, &save->ActiveShader, NULL);
|
||||
}
|
||||
|
||||
@@ -459,9 +459,6 @@ _mesa_create_exec_table(void)
|
||||
/* ???. GL_EXT_depth_bounds_test */
|
||||
SET_DepthBoundsEXT(exec, _mesa_DepthBoundsEXT);
|
||||
|
||||
/* 364. GL_EXT_provoking_vertex */
|
||||
SET_ProvokingVertexEXT(exec, _mesa_ProvokingVertexEXT);
|
||||
|
||||
/* ARB 1. GL_ARB_multitexture */
|
||||
#if _HAVE_FULL_GL
|
||||
SET_ActiveTextureARB(exec, _mesa_ActiveTextureARB);
|
||||
@@ -625,11 +622,6 @@ _mesa_create_exec_table(void)
|
||||
SET_ProgramLocalParameters4fvEXT(exec, _mesa_ProgramLocalParameters4fvEXT);
|
||||
#endif
|
||||
|
||||
/* GL_MESA_texture_array / GL_EXT_texture_array */
|
||||
#if FEATURE_EXT_framebuffer_object
|
||||
SET_FramebufferTextureLayerEXT(exec, _mesa_FramebufferTextureLayerEXT);
|
||||
#endif
|
||||
|
||||
/* GL_ATI_separate_stencil */
|
||||
SET_StencilFuncSeparateATI(exec, _mesa_StencilFuncSeparateATI);
|
||||
|
||||
@@ -663,11 +655,6 @@ _mesa_create_exec_table(void)
|
||||
SET_GetObjectParameterivAPPLE(exec, _mesa_GetObjectParameterivAPPLE);
|
||||
#endif
|
||||
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
SET_FramebufferTextureARB(exec, _mesa_FramebufferTextureARB);
|
||||
SET_FramebufferTextureFaceARB(exec, _mesa_FramebufferTextureFaceARB);
|
||||
#endif
|
||||
|
||||
SET_ClampColorARB(exec, _mesa_ClampColorARB);
|
||||
|
||||
/* GL_EXT_texture_integer */
|
||||
|
||||
@@ -206,11 +206,7 @@ check_index_bounds(struct gl_context *ctx, GLsizei count, GLenum type,
|
||||
GLboolean
|
||||
_mesa_valid_prim_mode(const struct gl_context *ctx, GLenum mode)
|
||||
{
|
||||
if (ctx->Extensions.ARB_geometry_shader4 &&
|
||||
mode > GL_TRIANGLE_STRIP_ADJACENCY_ARB) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
else if (mode > GL_POLYGON) {
|
||||
if (mode > GL_POLYGON) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -185,7 +185,6 @@ init_array(struct gl_context *ctx,
|
||||
{
|
||||
array->Size = size;
|
||||
array->Type = type;
|
||||
array->Format = GL_RGBA; /* only significant for GL_EXT_vertex_array_bgra */
|
||||
array->Stride = 0;
|
||||
array->StrideB = 0;
|
||||
array->Ptr = NULL;
|
||||
|
||||
@@ -285,16 +285,6 @@
|
||||
/** For GL_ATI_envmap_bump - support bump mapping on first 8 units */
|
||||
#define SUPPORTED_ATI_BUMP_UNITS 0xff
|
||||
|
||||
/** For GL_ARB_geometry_shader4 */
|
||||
/*@{*/
|
||||
#define MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 8
|
||||
#define MAX_GEOMETRY_VARYING_COMPONENTS 32
|
||||
#define MAX_VERTEX_VARYING_COMPONENTS 32
|
||||
#define MAX_GEOMETRY_UNIFORM_COMPONENTS 512
|
||||
#define MAX_GEOMETRY_OUTPUT_VERTICES 256
|
||||
#define MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 1024
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**
|
||||
* \name Mesa-specific parameters
|
||||
|
||||
@@ -346,8 +346,6 @@ dummy_enum_func(void)
|
||||
gl_texture_index ti = TEXTURE_2D_ARRAY_INDEX;
|
||||
gl_vert_attrib va = VERT_ATTRIB_POS;
|
||||
gl_vert_result vr = VERT_RESULT_HPOS;
|
||||
gl_geom_attrib ga = GEOM_ATTRIB_POSITION;
|
||||
gl_geom_result gr = GEOM_RESULT_POS;
|
||||
|
||||
(void) bi;
|
||||
(void) fi;
|
||||
@@ -356,8 +354,6 @@ dummy_enum_func(void)
|
||||
(void) ti;
|
||||
(void) va;
|
||||
(void) vr;
|
||||
(void) ga;
|
||||
(void) gr;
|
||||
}
|
||||
|
||||
|
||||
@@ -486,12 +482,6 @@ init_program_limits(GLenum type, struct gl_program_constants *prog)
|
||||
prog->MaxAddressRegs = MAX_FRAGMENT_PROGRAM_ADDRESS_REGS;
|
||||
prog->MaxUniformComponents = 4 * MAX_UNIFORMS;
|
||||
break;
|
||||
case MESA_GEOMETRY_PROGRAM:
|
||||
prog->MaxParameters = MAX_NV_VERTEX_PROGRAM_PARAMS;
|
||||
prog->MaxAttribs = MAX_NV_VERTEX_PROGRAM_INPUTS;
|
||||
prog->MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS;
|
||||
prog->MaxUniformComponents = MAX_GEOMETRY_UNIFORM_COMPONENTS;
|
||||
break;
|
||||
default:
|
||||
assert(0 && "Bad program type in init_program_limits()");
|
||||
}
|
||||
@@ -577,9 +567,6 @@ _mesa_init_constants(struct gl_context *ctx)
|
||||
#endif
|
||||
#if FEATURE_ARB_fragment_program
|
||||
init_program_limits(GL_FRAGMENT_PROGRAM_ARB, &ctx->Const.FragmentProgram);
|
||||
#endif
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
init_program_limits(MESA_GEOMETRY_PROGRAM, &ctx->Const.GeometryProgram);
|
||||
#endif
|
||||
ctx->Const.MaxProgramMatrices = MAX_PROGRAM_MATRICES;
|
||||
ctx->Const.MaxProgramMatrixStackDepth = MAX_PROGRAM_MATRIX_STACK_DEPTH;
|
||||
@@ -600,13 +587,6 @@ _mesa_init_constants(struct gl_context *ctx)
|
||||
ctx->Const.MaxCombinedTextureImageUnits = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
|
||||
ctx->Const.MaxVarying = MAX_VARYING;
|
||||
#endif
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
ctx->Const.MaxGeometryTextureImageUnits = MAX_GEOMETRY_TEXTURE_IMAGE_UNITS;
|
||||
ctx->Const.MaxVertexVaryingComponents = MAX_VERTEX_VARYING_COMPONENTS;
|
||||
ctx->Const.MaxGeometryVaryingComponents = MAX_GEOMETRY_VARYING_COMPONENTS;
|
||||
ctx->Const.MaxGeometryOutputVertices = MAX_GEOMETRY_OUTPUT_VERTICES;
|
||||
ctx->Const.MaxGeometryTotalOutputComponents = MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS;
|
||||
#endif
|
||||
|
||||
/* Shading language version */
|
||||
if (ctx->API == API_OPENGL) {
|
||||
@@ -626,9 +606,6 @@ _mesa_init_constants(struct gl_context *ctx)
|
||||
/* GL_ATI_envmap_bumpmap */
|
||||
ctx->Const.SupportedBumpUnits = SUPPORTED_ATI_BUMP_UNITS;
|
||||
|
||||
/* GL_EXT_provoking_vertex */
|
||||
ctx->Const.QuadsFollowProvokingVertexConvention = GL_TRUE;
|
||||
|
||||
/* GL 3.2: hard-coded for now: */
|
||||
ctx->Const.ProfileMask = GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
|
||||
|
||||
@@ -1680,7 +1657,6 @@ GLboolean
|
||||
_mesa_valid_to_render(struct gl_context *ctx, const char *where)
|
||||
{
|
||||
bool vert_from_glsl_shader = false;
|
||||
bool geom_from_glsl_shader = false;
|
||||
bool frag_from_glsl_shader = false;
|
||||
|
||||
/* This depends on having up to date derived state (shaders) */
|
||||
@@ -1708,27 +1684,6 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
|
||||
#endif
|
||||
}
|
||||
|
||||
if (ctx->Shader.CurrentGeometryProgram) {
|
||||
geom_from_glsl_shader = true;
|
||||
|
||||
if (!ctx->Shader.CurrentGeometryProgram->LinkStatus) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"%s(shader not linked)", where);
|
||||
return GL_FALSE;
|
||||
}
|
||||
#if 0 /* not normally enabled */
|
||||
{
|
||||
char errMsg[100];
|
||||
if (!_mesa_validate_shader_program(ctx,
|
||||
ctx->Shader.CurrentGeometryProgram,
|
||||
errMsg)) {
|
||||
_mesa_warning(ctx, "Shader program %u is invalid: %s",
|
||||
ctx->Shader.CurrentGeometryProgram->Name, errMsg);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (ctx->Shader.CurrentFragmentProgram) {
|
||||
frag_from_glsl_shader = true;
|
||||
|
||||
@@ -1760,11 +1715,6 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
/* FINISHME: If GL_NV_geometry_program4 is ever supported, the current
|
||||
* FINISHME: geometry program should validated here.
|
||||
*/
|
||||
(void) geom_from_glsl_shader;
|
||||
|
||||
if (!frag_from_glsl_shader) {
|
||||
if (ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
@@ -1794,7 +1744,6 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
|
||||
gl_shader_type i;
|
||||
|
||||
shProg[MESA_SHADER_VERTEX] = ctx->Shader.CurrentVertexProgram;
|
||||
shProg[MESA_SHADER_GEOMETRY] = ctx->Shader.CurrentGeometryProgram;
|
||||
shProg[MESA_SHADER_FRAGMENT] = ctx->Shader.CurrentFragmentProgram;
|
||||
|
||||
for (i = 0; i < MESA_SHADER_TYPES; i++) {
|
||||
|
||||
@@ -505,7 +505,6 @@
|
||||
#define _gloffset_ClearBufferuiv 434
|
||||
#define _gloffset_GetStringi 435
|
||||
#define _gloffset_TexBuffer 436
|
||||
#define _gloffset_FramebufferTexture 437
|
||||
#define _gloffset_GetBufferParameteri64v 438
|
||||
#define _gloffset_GetInteger64i_v 439
|
||||
#define _gloffset_LoadTransposeMatrixdARB 441
|
||||
@@ -635,9 +634,6 @@
|
||||
#define _gloffset_DrawArraysInstancedARB 573
|
||||
#define _gloffset_DrawElementsInstancedARB 574
|
||||
#define _gloffset_RenderbufferStorageMultisample 575
|
||||
#define _gloffset_FramebufferTextureARB 576
|
||||
#define _gloffset_FramebufferTextureFaceARB 577
|
||||
#define _gloffset_ProgramParameteriARB 578
|
||||
#define _gloffset_FlushMappedBufferRange 580
|
||||
#define _gloffset_MapBufferRange 581
|
||||
#define _gloffset_TexBufferARB 582
|
||||
@@ -912,14 +908,12 @@
|
||||
#define _gloffset_VertexAttribI4uivEXT 931
|
||||
#define _gloffset_VertexAttribI4usvEXT 932
|
||||
#define _gloffset_VertexAttribIPointerEXT 933
|
||||
#define _gloffset_FramebufferTextureLayerEXT 934
|
||||
#define _gloffset_ClearColorIiEXT 941
|
||||
#define _gloffset_ClearColorIuiEXT 942
|
||||
#define _gloffset_GetTexParameterIivEXT 943
|
||||
#define _gloffset_GetTexParameterIuivEXT 944
|
||||
#define _gloffset_TexParameterIivEXT 945
|
||||
#define _gloffset_TexParameterIuivEXT 946
|
||||
#define _gloffset_ProvokingVertexEXT 956
|
||||
#define _gloffset_GetTexParameterPointervAPPLE 957
|
||||
#define _gloffset_TextureRangeAPPLE 958
|
||||
#define _gloffset_GetObjectParameterivAPPLE 959
|
||||
@@ -969,7 +963,6 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
||||
#define ClearBufferuiv_remap_index 26
|
||||
#define GetStringi_remap_index 27
|
||||
#define TexBuffer_remap_index 28
|
||||
#define FramebufferTexture_remap_index 29
|
||||
#define GetBufferParameteri64v_remap_index 30
|
||||
#define GetInteger64i_v_remap_index 31
|
||||
#define VertexAttribDivisor_remap_index 32
|
||||
@@ -1100,9 +1093,6 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
||||
#define DrawArraysInstancedARB_remap_index 165
|
||||
#define DrawElementsInstancedARB_remap_index 166
|
||||
#define RenderbufferStorageMultisample_remap_index 167
|
||||
#define FramebufferTextureARB_remap_index 168
|
||||
#define FramebufferTextureFaceARB_remap_index 169
|
||||
#define ProgramParameteriARB_remap_index 170
|
||||
#define VertexAttribDivisorARB_remap_index 171
|
||||
#define FlushMappedBufferRange_remap_index 172
|
||||
#define MapBufferRange_remap_index 173
|
||||
@@ -1378,14 +1368,12 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
||||
#define VertexAttribI4uivEXT_remap_index 523
|
||||
#define VertexAttribI4usvEXT_remap_index 524
|
||||
#define VertexAttribIPointerEXT_remap_index 525
|
||||
#define FramebufferTextureLayerEXT_remap_index 526
|
||||
#define ClearColorIiEXT_remap_index 533
|
||||
#define ClearColorIuiEXT_remap_index 534
|
||||
#define GetTexParameterIivEXT_remap_index 535
|
||||
#define GetTexParameterIuivEXT_remap_index 536
|
||||
#define TexParameterIivEXT_remap_index 537
|
||||
#define TexParameterIuivEXT_remap_index 538
|
||||
#define ProvokingVertexEXT_remap_index 548
|
||||
#define GetTexParameterPointervAPPLE_remap_index 549
|
||||
#define TextureRangeAPPLE_remap_index 550
|
||||
#define GetObjectParameterivAPPLE_remap_index 551
|
||||
@@ -1560,9 +1548,6 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
||||
#define _gloffset_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index]
|
||||
#define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index]
|
||||
#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index]
|
||||
#define _gloffset_FramebufferTextureARB driDispatchRemapTable[FramebufferTextureARB_remap_index]
|
||||
#define _gloffset_FramebufferTextureFaceARB driDispatchRemapTable[FramebufferTextureFaceARB_remap_index]
|
||||
#define _gloffset_ProgramParameteriARB driDispatchRemapTable[ProgramParameteriARB_remap_index]
|
||||
#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index]
|
||||
#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index]
|
||||
#define _gloffset_TexBufferARB driDispatchRemapTable[TexBufferARB_remap_index]
|
||||
@@ -1837,14 +1822,12 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
|
||||
#define _gloffset_VertexAttribI4uivEXT driDispatchRemapTable[VertexAttribI4uivEXT_remap_index]
|
||||
#define _gloffset_VertexAttribI4usvEXT driDispatchRemapTable[VertexAttribI4usvEXT_remap_index]
|
||||
#define _gloffset_VertexAttribIPointerEXT driDispatchRemapTable[VertexAttribIPointerEXT_remap_index]
|
||||
#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index]
|
||||
#define _gloffset_ClearColorIiEXT driDispatchRemapTable[ClearColorIiEXT_remap_index]
|
||||
#define _gloffset_ClearColorIuiEXT driDispatchRemapTable[ClearColorIuiEXT_remap_index]
|
||||
#define _gloffset_GetTexParameterIivEXT driDispatchRemapTable[GetTexParameterIivEXT_remap_index]
|
||||
#define _gloffset_GetTexParameterIuivEXT driDispatchRemapTable[GetTexParameterIuivEXT_remap_index]
|
||||
#define _gloffset_TexParameterIivEXT driDispatchRemapTable[TexParameterIivEXT_remap_index]
|
||||
#define _gloffset_TexParameterIuivEXT driDispatchRemapTable[TexParameterIuivEXT_remap_index]
|
||||
#define _gloffset_ProvokingVertexEXT driDispatchRemapTable[ProvokingVertexEXT_remap_index]
|
||||
#define _gloffset_GetTexParameterPointervAPPLE driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index]
|
||||
#define _gloffset_TextureRangeAPPLE driDispatchRemapTable[TextureRangeAPPLE_remap_index]
|
||||
#define _gloffset_GetObjectParameterivAPPLE driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index]
|
||||
@@ -6669,17 +6652,6 @@ static inline void SET_TexBuffer(struct _glapi_table *disp, void (GLAPIENTRYP fn
|
||||
SET_by_offset(disp, _gloffset_TexBuffer, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_FramebufferTexture)(GLenum, GLenum, GLuint, GLint);
|
||||
#define CALL_FramebufferTexture(disp, parameters) \
|
||||
(* GET_FramebufferTexture(disp)) parameters
|
||||
static inline _glptr_FramebufferTexture GET_FramebufferTexture(struct _glapi_table *disp) {
|
||||
return (_glptr_FramebufferTexture) (GET_by_offset(disp, _gloffset_FramebufferTexture));
|
||||
}
|
||||
|
||||
static inline void SET_FramebufferTexture(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLuint, GLint)) {
|
||||
SET_by_offset(disp, _gloffset_FramebufferTexture, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_GetBufferParameteri64v)(GLenum, GLenum, GLint64 *);
|
||||
#define CALL_GetBufferParameteri64v(disp, parameters) \
|
||||
(* GET_GetBufferParameteri64v(disp)) parameters
|
||||
@@ -8099,39 +8071,6 @@ static inline void SET_RenderbufferStorageMultisample(struct _glapi_table *disp,
|
||||
SET_by_offset(disp, _gloffset_RenderbufferStorageMultisample, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_FramebufferTextureARB)(GLenum, GLenum, GLuint, GLint);
|
||||
#define CALL_FramebufferTextureARB(disp, parameters) \
|
||||
(* GET_FramebufferTextureARB(disp)) parameters
|
||||
static inline _glptr_FramebufferTextureARB GET_FramebufferTextureARB(struct _glapi_table *disp) {
|
||||
return (_glptr_FramebufferTextureARB) (GET_by_offset(disp, _gloffset_FramebufferTextureARB));
|
||||
}
|
||||
|
||||
static inline void SET_FramebufferTextureARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLuint, GLint)) {
|
||||
SET_by_offset(disp, _gloffset_FramebufferTextureARB, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_FramebufferTextureFaceARB)(GLenum, GLenum, GLuint, GLint, GLenum);
|
||||
#define CALL_FramebufferTextureFaceARB(disp, parameters) \
|
||||
(* GET_FramebufferTextureFaceARB(disp)) parameters
|
||||
static inline _glptr_FramebufferTextureFaceARB GET_FramebufferTextureFaceARB(struct _glapi_table *disp) {
|
||||
return (_glptr_FramebufferTextureFaceARB) (GET_by_offset(disp, _gloffset_FramebufferTextureFaceARB));
|
||||
}
|
||||
|
||||
static inline void SET_FramebufferTextureFaceARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLuint, GLint, GLenum)) {
|
||||
SET_by_offset(disp, _gloffset_FramebufferTextureFaceARB, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_ProgramParameteriARB)(GLuint, GLenum, GLint);
|
||||
#define CALL_ProgramParameteriARB(disp, parameters) \
|
||||
(* GET_ProgramParameteriARB(disp)) parameters
|
||||
static inline _glptr_ProgramParameteriARB GET_ProgramParameteriARB(struct _glapi_table *disp) {
|
||||
return (_glptr_ProgramParameteriARB) (GET_by_offset(disp, _gloffset_ProgramParameteriARB));
|
||||
}
|
||||
|
||||
static inline void SET_ProgramParameteriARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLenum, GLint)) {
|
||||
SET_by_offset(disp, _gloffset_ProgramParameteriARB, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_FlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr);
|
||||
#define CALL_FlushMappedBufferRange(disp, parameters) \
|
||||
(* GET_FlushMappedBufferRange(disp)) parameters
|
||||
@@ -11146,17 +11085,6 @@ static inline void SET_VertexAttribIPointerEXT(struct _glapi_table *disp, void (
|
||||
SET_by_offset(disp, _gloffset_VertexAttribIPointerEXT, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_FramebufferTextureLayerEXT)(GLenum, GLenum, GLuint, GLint, GLint);
|
||||
#define CALL_FramebufferTextureLayerEXT(disp, parameters) \
|
||||
(* GET_FramebufferTextureLayerEXT(disp)) parameters
|
||||
static inline _glptr_FramebufferTextureLayerEXT GET_FramebufferTextureLayerEXT(struct _glapi_table *disp) {
|
||||
return (_glptr_FramebufferTextureLayerEXT) (GET_by_offset(disp, _gloffset_FramebufferTextureLayerEXT));
|
||||
}
|
||||
|
||||
static inline void SET_FramebufferTextureLayerEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLuint, GLint, GLint)) {
|
||||
SET_by_offset(disp, _gloffset_FramebufferTextureLayerEXT, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_ClearColorIiEXT)(GLint, GLint, GLint, GLint);
|
||||
#define CALL_ClearColorIiEXT(disp, parameters) \
|
||||
(* GET_ClearColorIiEXT(disp)) parameters
|
||||
@@ -11223,17 +11151,6 @@ static inline void SET_TexParameterIuivEXT(struct _glapi_table *disp, void (GLAP
|
||||
SET_by_offset(disp, _gloffset_TexParameterIuivEXT, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_ProvokingVertexEXT)(GLenum);
|
||||
#define CALL_ProvokingVertexEXT(disp, parameters) \
|
||||
(* GET_ProvokingVertexEXT(disp)) parameters
|
||||
static inline _glptr_ProvokingVertexEXT GET_ProvokingVertexEXT(struct _glapi_table *disp) {
|
||||
return (_glptr_ProvokingVertexEXT) (GET_by_offset(disp, _gloffset_ProvokingVertexEXT));
|
||||
}
|
||||
|
||||
static inline void SET_ProvokingVertexEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum)) {
|
||||
SET_by_offset(disp, _gloffset_ProvokingVertexEXT, fn);
|
||||
}
|
||||
|
||||
typedef void (GLAPIENTRYP _glptr_GetTexParameterPointervAPPLE)(GLenum, GLenum, GLvoid **);
|
||||
#define CALL_GetTexParameterPointervAPPLE(disp, parameters) \
|
||||
(* GET_GetTexParameterPointervAPPLE(disp)) parameters
|
||||
|
||||
@@ -405,9 +405,6 @@ typedef enum
|
||||
OPCODE_EVAL_P1,
|
||||
OPCODE_EVAL_P2,
|
||||
|
||||
/* GL_EXT_provoking_vertex */
|
||||
OPCODE_PROVOKING_VERTEX,
|
||||
|
||||
/* GL_EXT_texture_integer */
|
||||
OPCODE_CLEARCOLOR_I,
|
||||
OPCODE_CLEARCOLOR_UI,
|
||||
@@ -421,11 +418,6 @@ typedef enum
|
||||
/* GL_NV_texture_barrier */
|
||||
OPCODE_TEXTURE_BARRIER_NV,
|
||||
|
||||
/* GL_ARB_geometry_shader4 */
|
||||
OPCODE_PROGRAM_PARAMETERI,
|
||||
OPCODE_FRAMEBUFFER_TEXTURE,
|
||||
OPCODE_FRAMEBUFFER_TEXTURE_FACE,
|
||||
|
||||
/* The following three are meta instructions */
|
||||
OPCODE_ERROR, /* raise compiled-in error */
|
||||
OPCODE_CONTINUE,
|
||||
@@ -6094,23 +6086,6 @@ save_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
||||
#endif
|
||||
|
||||
|
||||
/** GL_EXT_provoking_vertex */
|
||||
static void GLAPIENTRY
|
||||
save_ProvokingVertexEXT(GLenum mode)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROVOKING_VERTEX, 1);
|
||||
if (n) {
|
||||
n[1].e = mode;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
/*CALL_ProvokingVertexEXT(ctx->Exec, (mode));*/
|
||||
_mesa_ProvokingVertexEXT(mode);
|
||||
}
|
||||
}
|
||||
|
||||
/* aka UseProgram() */
|
||||
static void GLAPIENTRY
|
||||
save_UseProgramObjectARB(GLhandleARB program)
|
||||
@@ -6898,65 +6873,6 @@ save_TextureBarrierNV(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* GL_ARB_geometry_shader4 */
|
||||
static void GLAPIENTRY
|
||||
save_ProgramParameteri(GLuint program, GLenum pname, GLint value)
|
||||
{
|
||||
Node *n;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_PROGRAM_PARAMETERI, 3);
|
||||
if (n) {
|
||||
n[1].ui = program;
|
||||
n[2].e = pname;
|
||||
n[3].i = value;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_ProgramParameteriARB(ctx->Exec, (program, pname, value));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_FramebufferTexture(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level)
|
||||
{
|
||||
Node *n;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_FRAMEBUFFER_TEXTURE, 4);
|
||||
if (n) {
|
||||
n[1].e = target;
|
||||
n[2].e = attachment;
|
||||
n[3].ui = texture;
|
||||
n[4].i = level;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_FramebufferTextureARB(ctx->Exec, (target, attachment, texture, level));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_FramebufferTextureFace(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level, GLenum face)
|
||||
{
|
||||
Node *n;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_FRAMEBUFFER_TEXTURE_FACE, 5);
|
||||
if (n) {
|
||||
n[1].e = target;
|
||||
n[2].e = attachment;
|
||||
n[3].ui = texture;
|
||||
n[4].i = level;
|
||||
n[5].e = face;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_FramebufferTextureFaceARB(ctx->Exec, (target, attachment, texture,
|
||||
level, face));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save an error-generating command into display list.
|
||||
*
|
||||
@@ -7571,9 +7487,6 @@ execute_list(struct gl_context *ctx, GLuint list)
|
||||
case OPCODE_SHADE_MODEL:
|
||||
CALL_ShadeModel(ctx->Exec, (n[1].e));
|
||||
break;
|
||||
case OPCODE_PROVOKING_VERTEX:
|
||||
CALL_ProvokingVertexEXT(ctx->Exec, (n[1].e));
|
||||
break;
|
||||
case OPCODE_STENCIL_FUNC:
|
||||
CALL_StencilFunc(ctx->Exec, (n[1].e, n[2].i, n[3].ui));
|
||||
break;
|
||||
@@ -8096,19 +8009,6 @@ execute_list(struct gl_context *ctx, GLuint list)
|
||||
CALL_TextureBarrierNV(ctx->Exec, ());
|
||||
break;
|
||||
|
||||
/* GL_ARB_geometry_shader4 */
|
||||
case OPCODE_PROGRAM_PARAMETERI:
|
||||
CALL_ProgramParameteriARB(ctx->Exec, (n[1].ui, n[2].e, n[3].i));
|
||||
break;
|
||||
case OPCODE_FRAMEBUFFER_TEXTURE:
|
||||
CALL_FramebufferTextureARB(ctx->Exec, (n[1].e, n[2].e,
|
||||
n[3].ui, n[4].i));
|
||||
break;
|
||||
case OPCODE_FRAMEBUFFER_TEXTURE_FACE:
|
||||
CALL_FramebufferTextureFaceARB(ctx->Exec, (n[1].e, n[2].e,
|
||||
n[3].ui, n[4].i, n[5].e));
|
||||
break;
|
||||
|
||||
case OPCODE_CONTINUE:
|
||||
n = (Node *) n[1].next;
|
||||
break;
|
||||
@@ -9726,9 +9626,6 @@ _mesa_create_save_table(void)
|
||||
/* ARB 59. GL_ARB_copy_buffer */
|
||||
SET_CopyBufferSubData(table, _mesa_CopyBufferSubData); /* no dlist save */
|
||||
|
||||
/* 364. GL_EXT_provoking_vertex */
|
||||
SET_ProvokingVertexEXT(table, save_ProvokingVertexEXT);
|
||||
|
||||
/* 371. GL_APPLE_object_purgeable */
|
||||
#if FEATURE_APPLE_object_purgeable
|
||||
SET_ObjectPurgeableAPPLE(table, _mesa_ObjectPurgeableAPPLE);
|
||||
@@ -9786,11 +9683,6 @@ _mesa_create_save_table(void)
|
||||
SET_BlendEquationiARB(table, save_BlendEquationi);
|
||||
SET_BlendEquationSeparateiARB(table, save_BlendEquationSeparatei);
|
||||
|
||||
/* GL_ARB_geometry_shader4 */
|
||||
SET_ProgramParameteriARB(table, save_ProgramParameteri);
|
||||
SET_FramebufferTextureARB(table, save_FramebufferTexture);
|
||||
SET_FramebufferTextureFaceARB(table, save_FramebufferTextureFace);
|
||||
|
||||
/* GL_ARB_texture_storage (no dlist support) */
|
||||
SET_TexStorage1D(table, _mesa_TexStorage1D);
|
||||
SET_TexStorage2D(table, _mesa_TexStorage2D);
|
||||
@@ -10033,11 +9925,6 @@ print_list(struct gl_context *ctx, GLuint list)
|
||||
printf("EVAL_P2 %d %d\n", n[1].i, n[2].i);
|
||||
break;
|
||||
|
||||
case OPCODE_PROVOKING_VERTEX:
|
||||
printf("ProvokingVertex %s\n",
|
||||
_mesa_lookup_enum_by_nr(n[1].ui));
|
||||
break;
|
||||
|
||||
/*
|
||||
* meta opcodes/commands
|
||||
*/
|
||||
|
||||
@@ -868,14 +868,6 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP_SEAMLESS:
|
||||
CHECK_EXTENSION(ARB_seamless_cube_map, cap);
|
||||
if (ctx->Texture.CubeMapSeamless != state) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
ctx->Texture.CubeMapSeamless = state;
|
||||
}
|
||||
break;
|
||||
|
||||
/* GL 3.1 primitive restart. Note: this enum is different from
|
||||
* GL_PRIMITIVE_RESTART_NV (which is client state).
|
||||
*/
|
||||
@@ -1290,10 +1282,6 @@ _mesa_IsEnabled( GLenum cap )
|
||||
CHECK_EXTENSION(ARB_depth_clamp);
|
||||
return ctx->Transform.DepthClamp;
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP_SEAMLESS:
|
||||
CHECK_EXTENSION(ARB_seamless_cube_map);
|
||||
return ctx->Texture.CubeMapSeamless;
|
||||
|
||||
/* GL_NV_primitive_restart */
|
||||
case GL_PRIMITIVE_RESTART_NV:
|
||||
if (!ctx->Extensions.NV_primitive_restart) {
|
||||
|
||||
@@ -78,7 +78,6 @@ struct extension {
|
||||
static const struct extension extension_table[] = {
|
||||
/* ARB Extensions */
|
||||
{ "GL_ARB_ES2_compatibility", o(ARB_ES2_compatibility), GL, 2009 },
|
||||
{ "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 },
|
||||
{ "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 },
|
||||
{ "GL_ARB_copy_buffer", o(ARB_copy_buffer), GL, 2008 },
|
||||
{ "GL_ARB_conservative_depth", o(ARB_conservative_depth), GL, 2011 },
|
||||
@@ -88,7 +87,6 @@ static const struct extension extension_table[] = {
|
||||
{ "GL_ARB_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 },
|
||||
{ "GL_ARB_draw_elements_base_vertex", o(ARB_draw_elements_base_vertex), GL, 2009 },
|
||||
{ "GL_ARB_draw_instanced", o(ARB_draw_instanced), GL, 2008 },
|
||||
{ "GL_ARB_explicit_attrib_location", o(ARB_explicit_attrib_location), GL, 2009 },
|
||||
{ "GL_ARB_fragment_coord_conventions", o(ARB_fragment_coord_conventions), GL, 2009 },
|
||||
{ "GL_ARB_fragment_program", o(ARB_fragment_program), GL, 2002 },
|
||||
{ "GL_ARB_fragment_program_shadow", o(ARB_fragment_program_shadow), GL, 2003 },
|
||||
@@ -103,9 +101,7 @@ static const struct extension extension_table[] = {
|
||||
{ "GL_ARB_pixel_buffer_object", o(EXT_pixel_buffer_object), GL, 2004 },
|
||||
{ "GL_ARB_point_parameters", o(EXT_point_parameters), GL, 1997 },
|
||||
{ "GL_ARB_point_sprite", o(ARB_point_sprite), GL, 2003 },
|
||||
{ "GL_ARB_provoking_vertex", o(EXT_provoking_vertex), GL, 2009 },
|
||||
{ "GL_ARB_robustness", o(dummy_true), GL, 2010 },
|
||||
{ "GL_ARB_seamless_cube_map", o(ARB_seamless_cube_map), GL, 2009 },
|
||||
{ "GL_ARB_shader_objects", o(ARB_shader_objects), GL, 2002 },
|
||||
{ "GL_ARB_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 },
|
||||
{ "GL_ARB_shader_texture_lod", o(ARB_shader_texture_lod), GL, 2009 },
|
||||
@@ -121,14 +117,12 @@ static const struct extension extension_table[] = {
|
||||
{ "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), GL, 2001 },
|
||||
{ "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 },
|
||||
{ "GL_ARB_texture_mirrored_repeat", o(dummy_true), GL, 2001 },
|
||||
{ "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 },
|
||||
{ "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 },
|
||||
{ "GL_ARB_texture_rectangle", o(NV_texture_rectangle), GL, 2004 },
|
||||
{ "GL_ARB_texture_rg", o(ARB_texture_rg), GL, 2008 },
|
||||
{ "GL_ARB_texture_storage", o(ARB_texture_storage), GL, 2011 },
|
||||
{ "GL_ARB_transpose_matrix", o(ARB_transpose_matrix), GL, 1999 },
|
||||
{ "GL_ARB_uniform_buffer_object", o(ARB_uniform_buffer_object), GL, 2002 },
|
||||
{ "GL_ARB_vertex_array_bgra", o(EXT_vertex_array_bgra), GL, 2008 },
|
||||
{ "GL_ARB_vertex_array_object", o(ARB_vertex_array_object), GL, 2006 },
|
||||
{ "GL_ARB_vertex_buffer_object", o(dummy_true), GL, 2003 },
|
||||
{ "GL_ARB_vertex_program", o(ARB_vertex_program), GL, 2002 },
|
||||
@@ -161,7 +155,6 @@ static const struct extension extension_table[] = {
|
||||
{ "GL_EXT_pixel_buffer_object", o(EXT_pixel_buffer_object), GL, 2004 },
|
||||
{ "GL_EXT_point_parameters", o(EXT_point_parameters), GL, 1997 },
|
||||
{ "GL_EXT_polygon_offset", o(dummy_true), GL, 1995 },
|
||||
{ "GL_EXT_provoking_vertex", o(EXT_provoking_vertex), GL, 2009 },
|
||||
{ "GL_EXT_rescale_normal", o(EXT_rescale_normal), GL, 1997 },
|
||||
{ "GL_EXT_secondary_color", o(EXT_secondary_color), GL, 1999 },
|
||||
{ "GL_EXT_separate_shader_objects", o(EXT_separate_shader_objects), GL, 2008 },
|
||||
@@ -192,7 +185,6 @@ static const struct extension extension_table[] = {
|
||||
{ "GL_EXT_texture_snorm", o(EXT_texture_snorm), GL, 2009 },
|
||||
{ "GL_EXT_texture_sRGB", o(EXT_texture_sRGB), GL, 2004 },
|
||||
{ "GL_EXT_texture_type_2_10_10_10_REV", o(dummy_true), ES2, 2008 },
|
||||
{ "GL_EXT_vertex_array_bgra", o(EXT_vertex_array_bgra), GL, 2008 },
|
||||
{ "GL_EXT_vertex_array", o(dummy_true), GL, 1995 },
|
||||
|
||||
/* OES extensions */
|
||||
@@ -239,7 +231,6 @@ static const struct extension extension_table[] = {
|
||||
{ "GL_3DFX_texture_compression_FXT1", o(TDFX_texture_compression_FXT1), GL, 1999 },
|
||||
{ "GL_AMD_conservative_depth", o(ARB_conservative_depth), GL, 2009 },
|
||||
{ "GL_AMD_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 },
|
||||
{ "GL_AMD_seamless_cubemap_per_texture", o(AMD_seamless_cubemap_per_texture), GL, 2009 },
|
||||
{ "GL_AMD_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 },
|
||||
{ "GL_APPLE_object_purgeable", o(APPLE_object_purgeable), GL, 2006 },
|
||||
{ "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 },
|
||||
@@ -359,7 +350,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
|
||||
ctx->Extensions.ARB_depth_clamp = GL_TRUE;
|
||||
ctx->Extensions.ARB_draw_elements_base_vertex = GL_TRUE;
|
||||
ctx->Extensions.ARB_draw_instanced = GL_TRUE;
|
||||
ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE;
|
||||
ctx->Extensions.ARB_fragment_coord_conventions = GL_TRUE;
|
||||
#if FEATURE_ARB_fragment_program
|
||||
ctx->Extensions.ARB_fragment_program = GL_TRUE;
|
||||
@@ -370,10 +360,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
|
||||
#endif
|
||||
#if FEATURE_ARB_framebuffer_object
|
||||
ctx->Extensions.ARB_framebuffer_object = GL_TRUE;
|
||||
#endif
|
||||
#if FEATURE_ARB_geometry_shader4 && 0
|
||||
/* XXX re-enable when GLSL compiler again supports geometry shaders */
|
||||
ctx->Extensions.ARB_geometry_shader4 = GL_TRUE;
|
||||
#endif
|
||||
ctx->Extensions.ARB_half_float_pixel = GL_TRUE;
|
||||
ctx->Extensions.ARB_half_float_vertex = GL_TRUE;
|
||||
@@ -432,7 +418,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
|
||||
ctx->Extensions.EXT_pixel_buffer_object = GL_TRUE;
|
||||
#endif
|
||||
ctx->Extensions.EXT_point_parameters = GL_TRUE;
|
||||
ctx->Extensions.EXT_provoking_vertex = GL_TRUE;
|
||||
ctx->Extensions.EXT_shadow_funcs = GL_TRUE;
|
||||
ctx->Extensions.EXT_secondary_color = GL_TRUE;
|
||||
ctx->Extensions.EXT_stencil_two_side = GL_TRUE;
|
||||
@@ -444,7 +429,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
|
||||
#if FEATURE_EXT_texture_sRGB
|
||||
ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
|
||||
#endif
|
||||
ctx->Extensions.EXT_vertex_array_bgra = GL_TRUE;
|
||||
/*ctx->Extensions.IBM_multimode_draw_arrays = GL_TRUE;*/
|
||||
ctx->Extensions.MESA_pack_invert = GL_TRUE;
|
||||
ctx->Extensions.MESA_resize_buffers = GL_TRUE;
|
||||
|
||||
@@ -2152,17 +2152,6 @@ _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment,
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level, GLint layer)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
framebuffer_texture(ctx, "Layer", target, attachment, 0, texture,
|
||||
level, layer);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment,
|
||||
GLenum renderbufferTarget,
|
||||
@@ -2842,26 +2831,3 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
||||
}
|
||||
#endif /* FEATURE_EXT_framebuffer_blit */
|
||||
|
||||
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
void GLAPIENTRY
|
||||
_mesa_FramebufferTextureARB(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glFramebufferTextureARB "
|
||||
"not implemented!");
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_FramebufferTextureFaceARB(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level, GLenum face)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glFramebufferTextureFaceARB "
|
||||
"not implemented!");
|
||||
}
|
||||
#endif /* FEATURE_ARB_geometry_shader4 */
|
||||
|
||||
@@ -161,10 +161,6 @@ _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment,
|
||||
GLenum textarget, GLuint texture,
|
||||
GLint level, GLint zoffset);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level, GLint layer);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment,
|
||||
GLenum renderbuffertarget,
|
||||
@@ -183,13 +179,5 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
||||
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
|
||||
GLbitfield mask, GLenum filter);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_FramebufferTextureARB(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_FramebufferTextureFaceARB(GLenum target, GLenum attachment,
|
||||
GLuint texture, GLint level, GLenum face);
|
||||
|
||||
|
||||
#endif /* FBOBJECT_H */
|
||||
|
||||
@@ -303,13 +303,11 @@ EXTRA_EXT(EXT_depth_bounds_test);
|
||||
EXTRA_EXT(ARB_depth_clamp);
|
||||
EXTRA_EXT(EXT_framebuffer_blit);
|
||||
EXTRA_EXT(ARB_shader_objects);
|
||||
EXTRA_EXT(EXT_provoking_vertex);
|
||||
EXTRA_EXT(ARB_fragment_shader);
|
||||
EXTRA_EXT(ARB_fragment_program);
|
||||
EXTRA_EXT2(ARB_framebuffer_object, EXT_framebuffer_multisample);
|
||||
EXTRA_EXT(EXT_framebuffer_object);
|
||||
EXTRA_EXT(APPLE_vertex_array_object);
|
||||
EXTRA_EXT(ARB_seamless_cube_map);
|
||||
EXTRA_EXT(EXT_compiled_vertex_array);
|
||||
EXTRA_EXT(ARB_vertex_shader);
|
||||
EXTRA_EXT(EXT_pixel_buffer_object);
|
||||
@@ -318,7 +316,6 @@ EXTRA_EXT2(NV_point_sprite, ARB_point_sprite);
|
||||
EXTRA_EXT2(ARB_fragment_program, NV_fragment_program);
|
||||
EXTRA_EXT2(ARB_vertex_program, NV_vertex_program);
|
||||
EXTRA_EXT2(ARB_vertex_program, ARB_fragment_program);
|
||||
EXTRA_EXT(ARB_geometry_shader4);
|
||||
EXTRA_EXT(ARB_color_buffer_float);
|
||||
EXTRA_EXT(ARB_copy_buffer);
|
||||
EXTRA_EXT(EXT_framebuffer_sRGB);
|
||||
@@ -1154,13 +1151,6 @@ static const struct value_desc values[] = {
|
||||
{ GL_READ_FRAMEBUFFER_BINDING_EXT, LOC_CUSTOM, TYPE_INT, 0,
|
||||
extra_EXT_framebuffer_blit },
|
||||
|
||||
/* GL_EXT_provoking_vertex */
|
||||
{ GL_PROVOKING_VERTEX_EXT,
|
||||
CONTEXT_ENUM(Light.ProvokingVertex), extra_EXT_provoking_vertex },
|
||||
{ GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT,
|
||||
CONTEXT_BOOL(Const.QuadsFollowProvokingVertexConvention),
|
||||
extra_EXT_provoking_vertex },
|
||||
|
||||
/* GL_ARB_framebuffer_object */
|
||||
{ GL_MAX_SAMPLES, CONTEXT_INT(Const.MaxSamples),
|
||||
extra_ARB_framebuffer_object_EXT_framebuffer_multisample },
|
||||
@@ -1169,34 +1159,10 @@ static const struct value_desc values[] = {
|
||||
{ GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name),
|
||||
extra_APPLE_vertex_array_object },
|
||||
|
||||
/* GL_ARB_seamless_cube_map */
|
||||
{ GL_TEXTURE_CUBE_MAP_SEAMLESS,
|
||||
CONTEXT_BOOL(Texture.CubeMapSeamless), extra_ARB_seamless_cube_map },
|
||||
|
||||
/* GL_EXT_texture_integer */
|
||||
{ GL_RGBA_INTEGER_MODE_EXT, BUFFER_BOOL(_IntegerColor),
|
||||
extra_EXT_texture_integer },
|
||||
|
||||
/* GL_ARB_geometry_shader4 */
|
||||
{ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB,
|
||||
CONTEXT_INT(Const.MaxGeometryTextureImageUnits),
|
||||
extra_ARB_geometry_shader4 },
|
||||
{ GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB,
|
||||
CONTEXT_INT(Const.MaxGeometryOutputVertices),
|
||||
extra_ARB_geometry_shader4 },
|
||||
{ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB,
|
||||
CONTEXT_INT(Const.MaxGeometryTotalOutputComponents),
|
||||
extra_ARB_geometry_shader4 },
|
||||
{ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB,
|
||||
CONTEXT_INT(Const.GeometryProgram.MaxUniformComponents),
|
||||
extra_ARB_geometry_shader4 },
|
||||
{ GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB,
|
||||
CONTEXT_INT(Const.MaxGeometryVaryingComponents),
|
||||
extra_ARB_geometry_shader4 },
|
||||
{ GL_MAX_VERTEX_VARYING_COMPONENTS_ARB,
|
||||
CONTEXT_INT(Const.MaxVertexVaryingComponents),
|
||||
extra_ARB_geometry_shader4 },
|
||||
|
||||
/* GL_ARB_color_buffer_float */
|
||||
{ GL_RGBA_FLOAT_MODE_ARB, BUFFER_FIELD(Visual.floatMode, TYPE_BOOLEAN), 0 },
|
||||
|
||||
|
||||
@@ -149,13 +149,6 @@ typedef void *GLeglImageOES;
|
||||
*/
|
||||
#define GL_SHADER_PROGRAM_MESA 0x9999
|
||||
|
||||
|
||||
/**
|
||||
* Internal token for geometry programs.
|
||||
* Use the value for GL_GEOMETRY_PROGRAM_NV for now.
|
||||
*/
|
||||
#define MESA_GEOMETRY_PROGRAM 0x8c26
|
||||
|
||||
/* Several fields of struct gl_config can take these as values. Since
|
||||
* GLX header files may not be available everywhere they need to be used,
|
||||
* redefine them here.
|
||||
|
||||
@@ -63,38 +63,6 @@ _mesa_ShadeModel( GLenum mode )
|
||||
ctx->Driver.ShadeModel( ctx, mode );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the provoking vertex (the vertex which specifies the prim's
|
||||
* color when flat shading) to either the first or last vertex of the
|
||||
* triangle or line.
|
||||
*/
|
||||
void GLAPIENTRY
|
||||
_mesa_ProvokingVertexEXT(GLenum mode)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
if (MESA_VERBOSE&VERBOSE_API)
|
||||
_mesa_debug(ctx, "glProvokingVertexEXT 0x%x\n", mode);
|
||||
|
||||
switch (mode) {
|
||||
case GL_FIRST_VERTEX_CONVENTION_EXT:
|
||||
case GL_LAST_VERTEX_CONVENTION_EXT:
|
||||
break;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glProvokingVertexEXT(0x%x)", mode);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctx->Light.ProvokingVertex == mode)
|
||||
return;
|
||||
|
||||
FLUSH_VERTICES(ctx, _NEW_LIGHT);
|
||||
ctx->Light.ProvokingVertex = mode;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper function called by _mesa_Lightfv and _mesa_PopAttrib to set
|
||||
* per-light state.
|
||||
@@ -1372,7 +1340,6 @@ _mesa_init_lighting( struct gl_context *ctx )
|
||||
init_lightmodel( &ctx->Light.Model );
|
||||
init_material( &ctx->Light.Material );
|
||||
ctx->Light.ShadeModel = GL_SMOOTH;
|
||||
ctx->Light.ProvokingVertex = GL_LAST_VERTEX_CONVENTION_EXT;
|
||||
ctx->Light.Enabled = GL_FALSE;
|
||||
ctx->Light.ColorMaterialFace = GL_FRONT_AND_BACK;
|
||||
ctx->Light.ColorMaterialMode = GL_AMBIENT_AND_DIFFUSE;
|
||||
|
||||
@@ -38,9 +38,6 @@ struct gl_material;
|
||||
extern void GLAPIENTRY
|
||||
_mesa_ShadeModel( GLenum mode );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_ProvokingVertexEXT(GLenum mode);
|
||||
|
||||
|
||||
#if _HAVE_FULL_GL
|
||||
extern void GLAPIENTRY
|
||||
|
||||
@@ -94,8 +94,7 @@ typedef enum
|
||||
{
|
||||
MESA_SHADER_VERTEX = 0,
|
||||
MESA_SHADER_FRAGMENT = 1,
|
||||
MESA_SHADER_GEOMETRY = 2,
|
||||
MESA_SHADER_TYPES = 3
|
||||
MESA_SHADER_TYPES = 2
|
||||
} gl_shader_type;
|
||||
|
||||
|
||||
@@ -248,76 +247,6 @@ typedef enum
|
||||
|
||||
/*********************************************/
|
||||
|
||||
/**
|
||||
* Indexes for geometry program attributes.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GEOM_ATTRIB_POSITION = 0,
|
||||
GEOM_ATTRIB_COLOR0 = 1,
|
||||
GEOM_ATTRIB_COLOR1 = 2,
|
||||
GEOM_ATTRIB_SECONDARY_COLOR0 = 3,
|
||||
GEOM_ATTRIB_SECONDARY_COLOR1 = 4,
|
||||
GEOM_ATTRIB_FOG_FRAG_COORD = 5,
|
||||
GEOM_ATTRIB_POINT_SIZE = 6,
|
||||
GEOM_ATTRIB_CLIP_VERTEX = 7,
|
||||
GEOM_ATTRIB_PRIMITIVE_ID = 8,
|
||||
GEOM_ATTRIB_TEX_COORD = 9,
|
||||
|
||||
GEOM_ATTRIB_VAR0 = 16,
|
||||
GEOM_ATTRIB_MAX = (GEOM_ATTRIB_VAR0 + MAX_VARYING)
|
||||
} gl_geom_attrib;
|
||||
|
||||
/**
|
||||
* Bitflags for geometry attributes.
|
||||
* These are used in bitfields in many places.
|
||||
*/
|
||||
/*@{*/
|
||||
#define GEOM_BIT_COLOR0 (1 << GEOM_ATTRIB_COLOR0)
|
||||
#define GEOM_BIT_COLOR1 (1 << GEOM_ATTRIB_COLOR1)
|
||||
#define GEOM_BIT_SCOLOR0 (1 << GEOM_ATTRIB_SECONDARY_COLOR0)
|
||||
#define GEOM_BIT_SCOLOR1 (1 << GEOM_ATTRIB_SECONDARY_COLOR1)
|
||||
#define GEOM_BIT_TEX_COORD (1 << GEOM_ATTRIB_TEX_COORD)
|
||||
#define GEOM_BIT_FOG_COORD (1 << GEOM_ATTRIB_FOG_FRAG_COORD)
|
||||
#define GEOM_BIT_POSITION (1 << GEOM_ATTRIB_POSITION)
|
||||
#define GEOM_BIT_POINT_SIDE (1 << GEOM_ATTRIB_POINT_SIZE)
|
||||
#define GEOM_BIT_CLIP_VERTEX (1 << GEOM_ATTRIB_CLIP_VERTEX)
|
||||
#define GEOM_BIT_PRIM_ID (1 << GEOM_ATTRIB_PRIMITIVE_ID)
|
||||
#define GEOM_BIT_VAR0 (1 << GEOM_ATTRIB_VAR0)
|
||||
|
||||
#define GEOM_BIT_VAR(g) (1 << (GEOM_BIT_VAR0 + (g)))
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**
|
||||
* Indexes for geometry program result attributes
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GEOM_RESULT_POS = 0,
|
||||
GEOM_RESULT_COL0 = 1,
|
||||
GEOM_RESULT_COL1 = 2,
|
||||
GEOM_RESULT_SCOL0 = 3,
|
||||
GEOM_RESULT_SCOL1 = 4,
|
||||
GEOM_RESULT_FOGC = 5,
|
||||
GEOM_RESULT_TEX0 = 6,
|
||||
GEOM_RESULT_TEX1 = 7,
|
||||
GEOM_RESULT_TEX2 = 8,
|
||||
GEOM_RESULT_TEX3 = 9,
|
||||
GEOM_RESULT_TEX4 = 10,
|
||||
GEOM_RESULT_TEX5 = 11,
|
||||
GEOM_RESULT_TEX6 = 12,
|
||||
GEOM_RESULT_TEX7 = 13,
|
||||
GEOM_RESULT_PSIZ = 14,
|
||||
GEOM_RESULT_CLPV = 15,
|
||||
GEOM_RESULT_PRID = 16,
|
||||
GEOM_RESULT_LAYR = 17,
|
||||
GEOM_RESULT_VAR0 = 18, /**< shader varying, should really be 16 */
|
||||
/* ### we need to -2 because var0 is 18 instead 16 like in the others */
|
||||
GEOM_RESULT_MAX = (GEOM_RESULT_VAR0 + MAX_VARYING - 2)
|
||||
} gl_geom_result;
|
||||
|
||||
|
||||
/**
|
||||
* Indexes for fragment program input attributes. Note that
|
||||
* _mesa_vert_result_to_frag_attrib() and frag_attrib_to_vert_result() make
|
||||
@@ -976,7 +905,6 @@ struct gl_light_attrib
|
||||
|
||||
GLboolean Enabled; /**< Lighting enabled flag */
|
||||
GLenum ShadeModel; /**< GL_FLAT or GL_SMOOTH */
|
||||
GLenum ProvokingVertex; /**< GL_EXT_provoking_vertex */
|
||||
GLenum ColorMaterialFace; /**< GL_FRONT, BACK or FRONT_AND_BACK */
|
||||
GLenum ColorMaterialMode; /**< GL_AMBIENT, GL_DIFFUSE, etc */
|
||||
GLbitfield ColorMaterialBitmask; /**< bitmask formed from Face and Mode */
|
||||
@@ -1325,7 +1253,6 @@ struct gl_sampler_object
|
||||
GLfloat MaxLod; /**< max lambda, OpenGL 1.2 */
|
||||
GLfloat LodBias; /**< OpenGL 1.4 */
|
||||
GLfloat MaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */
|
||||
GLboolean CubeMapSeamless; /**< GL_AMD_seamless_cubemap_per_texture */
|
||||
|
||||
};
|
||||
|
||||
@@ -1465,9 +1392,6 @@ struct gl_texture_attrib
|
||||
/** GL_ARB_texture_buffer_object */
|
||||
struct gl_buffer_object *BufferObject;
|
||||
|
||||
/** GL_ARB_seamless_cubemap */
|
||||
GLboolean CubeMapSeamless;
|
||||
|
||||
/** Texture units/samplers used by vertex or fragment texturing */
|
||||
GLbitfield _EnabledUnits;
|
||||
|
||||
@@ -1572,7 +1496,6 @@ struct gl_client_array
|
||||
{
|
||||
GLint Size; /**< components per element (1,2,3,4) */
|
||||
GLenum Type; /**< datatype: GL_FLOAT, GL_INT, etc */
|
||||
GLenum Format; /**< default: GL_RGBA, but may be GL_BGRA */
|
||||
GLsizei Stride; /**< user-specified stride */
|
||||
GLsizei StrideB; /**< actual stride in bytes */
|
||||
const GLubyte *Ptr; /**< Points to array data */
|
||||
@@ -1896,18 +1819,6 @@ struct gl_vertex_program
|
||||
};
|
||||
|
||||
|
||||
/** Geometry program object */
|
||||
struct gl_geometry_program
|
||||
{
|
||||
struct gl_program Base; /**< base class */
|
||||
|
||||
GLint VerticesOut;
|
||||
GLenum InputType; /**< GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_ARB,
|
||||
GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */
|
||||
GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP */
|
||||
};
|
||||
|
||||
|
||||
/** Fragment program object */
|
||||
struct gl_fragment_program
|
||||
{
|
||||
@@ -1974,26 +1885,6 @@ struct gl_vertex_program_state
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Context state for geometry programs.
|
||||
*/
|
||||
struct gl_geometry_program_state
|
||||
{
|
||||
GLboolean Enabled; /**< GL_ARB_GEOMETRY_SHADER4 */
|
||||
GLboolean _Enabled; /**< Enabled and valid program? */
|
||||
struct gl_geometry_program *Current; /**< user-bound geometry program */
|
||||
|
||||
/** Currently enabled and valid program (including internal programs
|
||||
* and compiled shader programs).
|
||||
*/
|
||||
struct gl_geometry_program *_Current;
|
||||
|
||||
GLfloat Parameters[MAX_PROGRAM_ENV_PARAMS][4]; /**< Env params */
|
||||
|
||||
/** Cache of fixed-function programs */
|
||||
struct gl_program_cache *Cache;
|
||||
};
|
||||
|
||||
/**
|
||||
* Context state for fragment programs.
|
||||
*/
|
||||
@@ -2122,14 +2013,6 @@ struct gl_shader_program
|
||||
/** Post-link gl_FragDepth layout for ARB_conservative_depth. */
|
||||
enum gl_frag_depth_layout FragDepthLayout;
|
||||
|
||||
/** Geometry shader state - copied into gl_geometry_program at link time */
|
||||
struct {
|
||||
GLint VerticesOut;
|
||||
GLenum InputType; /**< GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_ARB,
|
||||
GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */
|
||||
GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP */
|
||||
} Geom;
|
||||
|
||||
/** Vertex shader state - copied into gl_vertex_program at link time */
|
||||
struct {
|
||||
GLboolean UsesClipDistance; /**< True if gl_ClipDistance is written to. */
|
||||
@@ -2203,7 +2086,6 @@ struct gl_shader_state
|
||||
* to \c NULL or to the same program.
|
||||
*/
|
||||
struct gl_shader_program *CurrentVertexProgram;
|
||||
struct gl_shader_program *CurrentGeometryProgram;
|
||||
struct gl_shader_program *CurrentFragmentProgram;
|
||||
|
||||
struct gl_shader_program *_CurrentFragmentProgram;
|
||||
@@ -2287,7 +2169,6 @@ struct gl_shared_state
|
||||
struct _mesa_HashTable *Programs; /**< All vertex/fragment programs */
|
||||
struct gl_vertex_program *DefaultVertexProgram;
|
||||
struct gl_fragment_program *DefaultFragmentProgram;
|
||||
struct gl_geometry_program *DefaultGeometryProgram;
|
||||
/*@}*/
|
||||
|
||||
struct _mesa_HashTable *BufferObjects;
|
||||
@@ -2493,7 +2374,6 @@ struct gl_constants
|
||||
GLuint MaxTextureImageUnits;
|
||||
GLuint MaxVertexTextureImageUnits;
|
||||
GLuint MaxCombinedTextureImageUnits;
|
||||
GLuint MaxGeometryTextureImageUnits;
|
||||
GLuint MaxTextureUnits; /**< = MIN(CoordUnits, ImageUnits) */
|
||||
GLfloat MaxTextureMaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */
|
||||
GLfloat MaxTextureLodBias; /**< GL_EXT_texture_lod_bias */
|
||||
@@ -2521,7 +2401,6 @@ struct gl_constants
|
||||
|
||||
struct gl_program_constants VertexProgram; /**< GL_ARB_vertex_program */
|
||||
struct gl_program_constants FragmentProgram; /**< GL_ARB_fragment_program */
|
||||
struct gl_program_constants GeometryProgram; /**< GL_ARB_geometry_shader4 */
|
||||
GLuint MaxProgramMatrices;
|
||||
GLuint MaxProgramMatrixStackDepth;
|
||||
|
||||
@@ -2536,12 +2415,6 @@ struct gl_constants
|
||||
|
||||
/** Number of varying vectors between vertex and fragment shaders */
|
||||
GLuint MaxVarying;
|
||||
GLuint MaxVertexVaryingComponents; /**< Between vert and geom shader */
|
||||
GLuint MaxGeometryVaryingComponents; /**< Between geom and frag shader */
|
||||
|
||||
/** GL_ARB_geometry_shader4 */
|
||||
GLuint MaxGeometryOutputVertices;
|
||||
GLuint MaxGeometryTotalOutputComponents;
|
||||
|
||||
GLuint GLSLVersion; /**< GLSL version supported (ex: 120 = 1.20) */
|
||||
|
||||
@@ -2566,9 +2439,6 @@ struct gl_constants
|
||||
/** Which texture units support GL_ATI_envmap_bumpmap as targets */
|
||||
GLbitfield SupportedBumpUnits;
|
||||
|
||||
/** GL_EXT_provoking_vertex */
|
||||
GLboolean QuadsFollowProvokingVertexConvention;
|
||||
|
||||
/** OpenGL version 3.0 */
|
||||
GLbitfield ContextFlags; /**< Ex: GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */
|
||||
|
||||
@@ -2619,7 +2489,6 @@ struct gl_extensions
|
||||
GLboolean dummy_true; /* Set true by _mesa_init_extensions(). */
|
||||
GLboolean dummy_false; /* Set false by _mesa_init_extensions(). */
|
||||
GLboolean ARB_ES2_compatibility;
|
||||
GLboolean ARB_blend_func_extended;
|
||||
GLboolean ARB_color_buffer_float;
|
||||
GLboolean ARB_conservative_depth;
|
||||
GLboolean ARB_copy_buffer;
|
||||
@@ -2633,13 +2502,10 @@ struct gl_extensions
|
||||
GLboolean ARB_fragment_program_shadow;
|
||||
GLboolean ARB_fragment_shader;
|
||||
GLboolean ARB_framebuffer_object;
|
||||
GLboolean ARB_explicit_attrib_location;
|
||||
GLboolean ARB_geometry_shader4;
|
||||
GLboolean ARB_half_float_pixel;
|
||||
GLboolean ARB_half_float_vertex;
|
||||
GLboolean ARB_map_buffer_range;
|
||||
GLboolean ARB_point_sprite;
|
||||
GLboolean ARB_seamless_cube_map;
|
||||
GLboolean ARB_shader_objects;
|
||||
GLboolean ARB_shader_stencil_export;
|
||||
GLboolean ARB_shader_texture_lod;
|
||||
@@ -2652,7 +2518,6 @@ struct gl_extensions
|
||||
GLboolean ARB_texture_env_crossbar;
|
||||
GLboolean ARB_texture_env_dot3;
|
||||
GLboolean ARB_texture_float;
|
||||
GLboolean ARB_texture_multisample;
|
||||
GLboolean ARB_texture_non_power_of_two;
|
||||
GLboolean ARB_texture_rg;
|
||||
GLboolean ARB_texture_storage;
|
||||
@@ -2681,7 +2546,6 @@ struct gl_extensions
|
||||
GLboolean EXT_packed_pixels;
|
||||
GLboolean EXT_pixel_buffer_object;
|
||||
GLboolean EXT_point_parameters;
|
||||
GLboolean EXT_provoking_vertex;
|
||||
GLboolean EXT_rescale_normal;
|
||||
GLboolean EXT_shadow_funcs;
|
||||
GLboolean EXT_secondary_color;
|
||||
@@ -2698,10 +2562,8 @@ struct gl_extensions
|
||||
GLboolean EXT_texture_mirror_clamp;
|
||||
GLboolean EXT_texture_snorm;
|
||||
GLboolean EXT_texture_sRGB;
|
||||
GLboolean EXT_vertex_array_bgra;
|
||||
GLboolean OES_standard_derivatives;
|
||||
/* vendor extensions */
|
||||
GLboolean AMD_seamless_cubemap_per_texture;
|
||||
GLboolean APPLE_packed_pixels;
|
||||
GLboolean APPLE_vertex_array_object;
|
||||
GLboolean APPLE_object_purgeable;
|
||||
@@ -3072,7 +2934,6 @@ struct gl_context
|
||||
struct gl_program_state Program; /**< general program state */
|
||||
struct gl_vertex_program_state VertexProgram;
|
||||
struct gl_fragment_program_state FragmentProgram;
|
||||
struct gl_geometry_program_state GeometryProgram;
|
||||
|
||||
struct gl_shader_state Shader; /**< GLSL shader object state */
|
||||
struct gl_shader_compiler_options ShaderCompilerOptions[MESA_SHADER_TYPES];
|
||||
|
||||
@@ -121,8 +121,6 @@ void
|
||||
_mesa_free_shader_state(struct gl_context *ctx)
|
||||
{
|
||||
_mesa_reference_shader_program(ctx, &ctx->Shader.CurrentVertexProgram, NULL);
|
||||
_mesa_reference_shader_program(ctx, &ctx->Shader.CurrentGeometryProgram,
|
||||
NULL);
|
||||
_mesa_reference_shader_program(ctx, &ctx->Shader.CurrentFragmentProgram,
|
||||
NULL);
|
||||
_mesa_reference_shader_program(ctx, &ctx->Shader._CurrentFragmentProgram,
|
||||
@@ -232,10 +230,6 @@ validate_shader_target(const struct gl_context *ctx, GLenum type)
|
||||
#if FEATURE_ARB_vertex_shader
|
||||
case GL_VERTEX_SHADER:
|
||||
return ctx->Extensions.ARB_vertex_shader;
|
||||
#endif
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
case GL_GEOMETRY_SHADER_ARB:
|
||||
return ctx->Extensions.ARB_geometry_shader4;
|
||||
#endif
|
||||
default:
|
||||
return false;
|
||||
@@ -558,17 +552,6 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param
|
||||
case GL_PROGRAM_BINARY_LENGTH_OES:
|
||||
*params = 0;
|
||||
break;
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
case GL_GEOMETRY_VERTICES_OUT_ARB:
|
||||
*params = shProg->Geom.VerticesOut;
|
||||
break;
|
||||
case GL_GEOMETRY_INPUT_TYPE_ARB:
|
||||
*params = shProg->Geom.InputType;
|
||||
break;
|
||||
case GL_GEOMETRY_OUTPUT_TYPE_ARB:
|
||||
*params = shProg->Geom.OutputType;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glGetProgramiv(pname)");
|
||||
return;
|
||||
@@ -755,9 +738,6 @@ print_shader_info(const struct gl_shader_program *shProg)
|
||||
case GL_FRAGMENT_SHADER:
|
||||
s = "fragment";
|
||||
break;
|
||||
case GL_GEOMETRY_SHADER:
|
||||
s = "geometry";
|
||||
break;
|
||||
default:
|
||||
s = "";
|
||||
}
|
||||
@@ -771,9 +751,6 @@ print_shader_info(const struct gl_shader_program *shProg)
|
||||
if (shProg->_LinkedShaders[MESA_SHADER_FRAGMENT])
|
||||
printf(" frag prog %u\n",
|
||||
shProg->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program->Id);
|
||||
if (shProg->_LinkedShaders[MESA_SHADER_GEOMETRY])
|
||||
printf(" geom prog %u\n",
|
||||
shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->Id);
|
||||
}
|
||||
|
||||
|
||||
@@ -813,15 +790,6 @@ use_shader_program(struct gl_context *ctx, GLenum type,
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
case GL_GEOMETRY_SHADER_ARB:
|
||||
target = &ctx->Shader.CurrentGeometryProgram;
|
||||
if ((shProg == NULL)
|
||||
|| (shProg->_LinkedShaders[MESA_SHADER_GEOMETRY] == NULL)) {
|
||||
shProg = NULL;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#if FEATURE_ARB_fragment_shader
|
||||
case GL_FRAGMENT_SHADER:
|
||||
target = &ctx->Shader.CurrentFragmentProgram;
|
||||
@@ -848,11 +816,6 @@ use_shader_program(struct gl_context *ctx, GLenum type,
|
||||
/* Empty for now. */
|
||||
break;
|
||||
#endif
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
case GL_GEOMETRY_SHADER_ARB:
|
||||
/* Empty for now. */
|
||||
break;
|
||||
#endif
|
||||
#if FEATURE_ARB_fragment_shader
|
||||
case GL_FRAGMENT_SHADER:
|
||||
if (*target == ctx->Shader._CurrentFragmentProgram) {
|
||||
@@ -878,7 +841,6 @@ void
|
||||
_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg)
|
||||
{
|
||||
use_shader_program(ctx, GL_VERTEX_SHADER, shProg);
|
||||
use_shader_program(ctx, GL_GEOMETRY_SHADER_ARB, shProg);
|
||||
use_shader_program(ctx, GL_FRAGMENT_SHADER, shProg);
|
||||
_mesa_active_program(ctx, shProg, "glUseProgram");
|
||||
|
||||
@@ -1468,71 +1430,6 @@ _mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat,
|
||||
#endif /* FEATURE_ES2 */
|
||||
|
||||
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value)
|
||||
{
|
||||
struct gl_shader_program *shProg;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
shProg = _mesa_lookup_shader_program_err(ctx, program,
|
||||
"glProgramParameteri");
|
||||
if (!shProg)
|
||||
return;
|
||||
|
||||
switch (pname) {
|
||||
case GL_GEOMETRY_VERTICES_OUT_ARB:
|
||||
if (value < 1 ||
|
||||
(unsigned) value > ctx->Const.MaxGeometryOutputVertices) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glProgramParameteri(GL_GEOMETRY_VERTICES_OUT_ARB=%d",
|
||||
value);
|
||||
return;
|
||||
}
|
||||
shProg->Geom.VerticesOut = value;
|
||||
break;
|
||||
case GL_GEOMETRY_INPUT_TYPE_ARB:
|
||||
switch (value) {
|
||||
case GL_POINTS:
|
||||
case GL_LINES:
|
||||
case GL_LINES_ADJACENCY_ARB:
|
||||
case GL_TRIANGLES:
|
||||
case GL_TRIANGLES_ADJACENCY_ARB:
|
||||
shProg->Geom.InputType = value;
|
||||
break;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glProgramParameteri(geometry input type = %s",
|
||||
_mesa_lookup_enum_by_nr(value));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case GL_GEOMETRY_OUTPUT_TYPE_ARB:
|
||||
switch (value) {
|
||||
case GL_POINTS:
|
||||
case GL_LINE_STRIP:
|
||||
case GL_TRIANGLE_STRIP:
|
||||
shProg->Geom.OutputType = value;
|
||||
break;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glProgramParameteri(geometry output type = %s",
|
||||
_mesa_lookup_enum_by_nr(value));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB(pname=%s)",
|
||||
_mesa_lookup_enum_by_nr(pname));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
_mesa_use_shader_program(struct gl_context *ctx, GLenum type,
|
||||
struct gl_shader_program *shProg)
|
||||
@@ -1674,10 +1571,6 @@ _mesa_init_shader_dispatch(struct _glapi_table *exec)
|
||||
SET_GetAttribLocationARB(exec, _mesa_GetAttribLocationARB);
|
||||
#endif
|
||||
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
SET_ProgramParameteriARB(exec, _mesa_ProgramParameteriARB);
|
||||
#endif
|
||||
|
||||
SET_UseShaderProgramEXT(exec, _mesa_UseShaderProgramEXT);
|
||||
SET_ActiveProgramEXT(exec, _mesa_ActiveProgramEXT);
|
||||
SET_CreateShaderProgramEXT(exec, _mesa_CreateShaderProgramEXT);
|
||||
|
||||
@@ -105,8 +105,7 @@ struct gl_shader *
|
||||
_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type)
|
||||
{
|
||||
struct gl_shader *shader;
|
||||
assert(type == GL_FRAGMENT_SHADER || type == GL_VERTEX_SHADER ||
|
||||
type == GL_GEOMETRY_SHADER_ARB);
|
||||
assert(type == GL_FRAGMENT_SHADER || type == GL_VERTEX_SHADER);
|
||||
shader = rzalloc(NULL, struct gl_shader);
|
||||
if (shader) {
|
||||
shader->Type = type;
|
||||
@@ -243,12 +242,6 @@ _mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog
|
||||
prog->AttributeBindings = string_to_uint_map_ctor();
|
||||
prog->FragDataBindings = string_to_uint_map_ctor();
|
||||
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
prog->Geom.VerticesOut = 0;
|
||||
prog->Geom.InputType = GL_TRIANGLES;
|
||||
prog->Geom.OutputType = GL_TRIANGLE_STRIP;
|
||||
#endif
|
||||
|
||||
prog->InfoLog = ralloc_strdup(prog, "");
|
||||
}
|
||||
|
||||
|
||||
@@ -109,8 +109,6 @@ _mesa_shader_type_to_index(GLenum v)
|
||||
return MESA_SHADER_VERTEX;
|
||||
case GL_FRAGMENT_SHADER:
|
||||
return MESA_SHADER_FRAGMENT;
|
||||
case GL_GEOMETRY_SHADER:
|
||||
return MESA_SHADER_GEOMETRY;
|
||||
default:
|
||||
ASSERT(0 && "bad value in _mesa_shader_type_to_index()");
|
||||
return MESA_SHADER_TYPES;
|
||||
@@ -124,7 +122,6 @@ _mesa_shader_index_to_type(GLuint i)
|
||||
static const GLenum enums[MESA_SHADER_TYPES] = {
|
||||
GL_VERTEX_SHADER,
|
||||
GL_FRAGMENT_SHADER,
|
||||
GL_GEOMETRY_SHADER ,
|
||||
};
|
||||
if (i >= MESA_SHADER_TYPES)
|
||||
return 0;
|
||||
|
||||
@@ -225,11 +225,9 @@ static GLbitfield
|
||||
update_program(struct gl_context *ctx)
|
||||
{
|
||||
const struct gl_shader_program *vsProg = ctx->Shader.CurrentVertexProgram;
|
||||
const struct gl_shader_program *gsProg = ctx->Shader.CurrentGeometryProgram;
|
||||
struct gl_shader_program *fsProg = ctx->Shader.CurrentFragmentProgram;
|
||||
const struct gl_vertex_program *prevVP = ctx->VertexProgram._Current;
|
||||
const struct gl_fragment_program *prevFP = ctx->FragmentProgram._Current;
|
||||
const struct gl_geometry_program *prevGP = ctx->GeometryProgram._Current;
|
||||
GLbitfield new_state = 0x0;
|
||||
|
||||
/*
|
||||
@@ -291,17 +289,6 @@ update_program(struct gl_context *ctx)
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (gsProg && gsProg->LinkStatus
|
||||
&& gsProg->_LinkedShaders[MESA_SHADER_GEOMETRY]) {
|
||||
/* Use GLSL geometry shader */
|
||||
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram._Current,
|
||||
(struct gl_geometry_program *)
|
||||
gsProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program);
|
||||
} else {
|
||||
/* No geometry program */
|
||||
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram._Current, NULL);
|
||||
}
|
||||
|
||||
/* Examine vertex program after fragment program as
|
||||
* _mesa_get_fixed_func_vertex_program() needs to know active
|
||||
* fragprog inputs.
|
||||
@@ -340,14 +327,6 @@ update_program(struct gl_context *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->GeometryProgram._Current != prevGP) {
|
||||
new_state |= _NEW_PROGRAM;
|
||||
if (ctx->Driver.BindProgram) {
|
||||
ctx->Driver.BindProgram(ctx, MESA_GEOMETRY_PROGRAM,
|
||||
(struct gl_program *) ctx->GeometryProgram._Current);
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->VertexProgram._Current != prevVP) {
|
||||
new_state |= _NEW_PROGRAM;
|
||||
if (ctx->Driver.BindProgram) {
|
||||
@@ -376,16 +355,6 @@ update_program_constants(struct gl_context *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->GeometryProgram._Current) {
|
||||
const struct gl_program_parameter_list *params =
|
||||
ctx->GeometryProgram._Current->Base.Parameters;
|
||||
/*FIXME: StateFlags is always 0 because we have unnamed constant
|
||||
* not state changes */
|
||||
if (params /*&& params->StateFlags & ctx->NewState*/) {
|
||||
new_state |= _NEW_PROGRAM_CONSTANTS;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->VertexProgram._Current) {
|
||||
const struct gl_program_parameter_list *params =
|
||||
ctx->VertexProgram._Current->Base.Parameters;
|
||||
|
||||
@@ -142,7 +142,6 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj,
|
||||
obj->Sampler.MaxLod = 1000.0;
|
||||
obj->Sampler.LodBias = 0.0;
|
||||
obj->Sampler.MaxAnisotropy = 1.0;
|
||||
obj->Sampler.CubeMapSeamless = GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -243,7 +242,6 @@ _mesa_copy_texture_object( struct gl_texture_object *dest,
|
||||
dest->BaseLevel = src->BaseLevel;
|
||||
dest->MaxLevel = src->MaxLevel;
|
||||
dest->Sampler.MaxAnisotropy = src->Sampler.MaxAnisotropy;
|
||||
dest->Sampler.CubeMapSeamless = src->Sampler.CubeMapSeamless;
|
||||
dest->_MaxLevel = src->_MaxLevel;
|
||||
dest->_MaxLambda = src->_MaxLambda;
|
||||
dest->GenerateMipmap = src->GenerateMipmap;
|
||||
|
||||
@@ -309,20 +309,6 @@ set_tex_parameteri(struct gl_context *ctx,
|
||||
return GL_TRUE;
|
||||
#endif
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP_SEAMLESS:
|
||||
if (ctx->Extensions.AMD_seamless_cubemap_per_texture) {
|
||||
GLenum param = params[0];
|
||||
if (param != GL_TRUE && param != GL_FALSE) {
|
||||
goto invalid_param;
|
||||
}
|
||||
if (param != texObj->Sampler.CubeMapSeamless) {
|
||||
flush(ctx);
|
||||
texObj->Sampler.CubeMapSeamless = param;
|
||||
}
|
||||
return GL_TRUE;
|
||||
}
|
||||
goto invalid_pname;
|
||||
|
||||
default:
|
||||
goto invalid_pname;
|
||||
}
|
||||
@@ -973,12 +959,6 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
|
||||
break;
|
||||
#endif
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP_SEAMLESS:
|
||||
if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
|
||||
goto invalid_pname;
|
||||
*params = (GLfloat) obj->Sampler.CubeMapSeamless;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_IMMUTABLE_FORMAT:
|
||||
if (!ctx->Extensions.ARB_texture_storage)
|
||||
goto invalid_pname;
|
||||
@@ -1078,12 +1058,6 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
|
||||
break;
|
||||
#endif
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP_SEAMLESS:
|
||||
if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
|
||||
goto invalid_pname;
|
||||
*params = (GLint) obj->Sampler.CubeMapSeamless;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_IMMUTABLE_FORMAT:
|
||||
if (!ctx->Extensions.ARB_texture_storage)
|
||||
goto invalid_pname;
|
||||
|
||||
@@ -346,7 +346,7 @@ static void
|
||||
log_program_parameters(const struct gl_shader_program *shProg)
|
||||
{
|
||||
static const char *stages[] = {
|
||||
"vertex", "fragment", "geometry"
|
||||
"vertex", "fragment"
|
||||
};
|
||||
|
||||
assert(Elements(stages) == MESA_SHADER_TYPES);
|
||||
|
||||
@@ -40,10 +40,6 @@
|
||||
#include "main/dispatch.h"
|
||||
|
||||
|
||||
/** Used to do error checking for GL_EXT_vertex_array_bgra */
|
||||
#define BGRA_OR_4 5
|
||||
|
||||
|
||||
/** Used to indicate which GL datatypes are accepted by each of the
|
||||
* glVertex/Color/Attrib/EtcPointer() functions.
|
||||
*/
|
||||
@@ -105,7 +101,7 @@ type_to_bit(const struct gl_context *ctx, GLenum type)
|
||||
* \param attrib the attribute array index to update
|
||||
* \param legalTypes bitmask of *_BIT above indicating legal datatypes
|
||||
* \param sizeMin min allowable size value
|
||||
* \param sizeMax max allowable size value (may also be BGRA_OR_4)
|
||||
* \param sizeMax max allowable size value
|
||||
* \param size components per element (1, 2, 3 or 4)
|
||||
* \param type datatype of each component (GL_FLOAT, GL_INT, etc)
|
||||
* \param stride stride between elements, in elements
|
||||
@@ -125,7 +121,6 @@ update_array(struct gl_context *ctx,
|
||||
struct gl_client_array *array;
|
||||
GLbitfield typeBit;
|
||||
GLsizei elementSize;
|
||||
GLenum format = GL_RGBA;
|
||||
|
||||
if (ctx->API != API_OPENGLES && ctx->API != API_OPENGLES2) {
|
||||
/* fixed point arrays / data is only allowed with OpenGL ES 1.x/2.0 */
|
||||
@@ -142,21 +137,8 @@ update_array(struct gl_context *ctx,
|
||||
return;
|
||||
}
|
||||
|
||||
/* Do size parameter checking.
|
||||
* If sizeMax = BGRA_OR_4 it means that size = GL_BGRA is legal and
|
||||
* must be handled specially.
|
||||
*/
|
||||
if (ctx->Extensions.EXT_vertex_array_bgra &&
|
||||
sizeMax == BGRA_OR_4 &&
|
||||
size == GL_BGRA) {
|
||||
if (type != GL_UNSIGNED_BYTE){
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "%s(GL_BGRA/GLubyte)", func);
|
||||
return;
|
||||
}
|
||||
format = GL_BGRA;
|
||||
size = 4;
|
||||
}
|
||||
else if (size < sizeMin || size > sizeMax || size > 4) {
|
||||
/* Do size parameter checking. */
|
||||
if (size < sizeMin || size > sizeMax || size > 4) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "%s(size=%d)", func, size);
|
||||
return;
|
||||
}
|
||||
@@ -182,7 +164,6 @@ update_array(struct gl_context *ctx,
|
||||
array = &ctx->Array.ArrayObj->VertexAttrib[attrib];
|
||||
array->Size = size;
|
||||
array->Type = type;
|
||||
array->Format = format;
|
||||
array->Stride = stride;
|
||||
array->StrideB = stride ? stride : elementSize;
|
||||
array->Normalized = normalized;
|
||||
@@ -242,7 +223,7 @@ _mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
update_array(ctx, "glColorPointer", VERT_ATTRIB_COLOR0,
|
||||
legalTypes, 3, BGRA_OR_4,
|
||||
legalTypes, 3, 4,
|
||||
size, type, stride, GL_TRUE, GL_FALSE, ptr);
|
||||
}
|
||||
|
||||
@@ -286,7 +267,7 @@ _mesa_SecondaryColorPointerEXT(GLint size, GLenum type,
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
update_array(ctx, "glSecondaryColorPointer", VERT_ATTRIB_COLOR1,
|
||||
legalTypes, 3, BGRA_OR_4,
|
||||
legalTypes, 3, 4,
|
||||
size, type, stride, GL_TRUE, GL_FALSE, ptr);
|
||||
}
|
||||
|
||||
@@ -374,7 +355,7 @@ _mesa_VertexAttribPointerNV(GLuint index, GLint size, GLenum type,
|
||||
}
|
||||
|
||||
update_array(ctx, "glVertexAttribPointerNV", VERT_ATTRIB_GENERIC(index),
|
||||
legalTypes, 1, BGRA_OR_4,
|
||||
legalTypes, 1, 4,
|
||||
size, type, stride, normalized, GL_FALSE, ptr);
|
||||
}
|
||||
#endif
|
||||
@@ -405,7 +386,7 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type,
|
||||
}
|
||||
|
||||
update_array(ctx, "glVertexAttribPointer", VERT_ATTRIB_GENERIC(index),
|
||||
legalTypes, 1, BGRA_OR_4,
|
||||
legalTypes, 1, 4,
|
||||
size, type, stride, normalized, GL_FALSE, ptr);
|
||||
}
|
||||
#endif
|
||||
@@ -1063,7 +1044,6 @@ _mesa_copy_client_array(struct gl_context *ctx,
|
||||
{
|
||||
dst->Size = src->Size;
|
||||
dst->Type = src->Type;
|
||||
dst->Format = src->Format;
|
||||
dst->Stride = src->Stride;
|
||||
dst->StrideB = src->StrideB;
|
||||
dst->Ptr = src->Ptr;
|
||||
|
||||
@@ -150,22 +150,9 @@ compute_version(struct gl_context *ctx)
|
||||
ctx->Const.GLSLVersion >= 150 &&
|
||||
ctx->Extensions.ARB_depth_clamp &&
|
||||
ctx->Extensions.ARB_draw_elements_base_vertex &&
|
||||
ctx->Extensions.ARB_fragment_coord_conventions &&
|
||||
ctx->Extensions.ARB_geometry_shader4 &&
|
||||
ctx->Extensions.EXT_provoking_vertex &&
|
||||
ctx->Extensions.ARB_seamless_cube_map &&
|
||||
ctx->Extensions.ARB_texture_multisample &&
|
||||
ctx->Extensions.EXT_vertex_array_bgra);
|
||||
const GLboolean ver_3_3 = (ver_3_2 &&
|
||||
ctx->Const.GLSLVersion >= 330 &&
|
||||
ctx->Extensions.ARB_blend_func_extended &&
|
||||
ctx->Extensions.ARB_explicit_attrib_location);
|
||||
ctx->Extensions.ARB_fragment_coord_conventions);
|
||||
|
||||
if (ver_3_3) {
|
||||
major = 3;
|
||||
minor = 3;
|
||||
}
|
||||
else if (ver_3_2) {
|
||||
if (ver_3_2) {
|
||||
major = 3;
|
||||
minor = 2;
|
||||
}
|
||||
|
||||
@@ -2988,10 +2988,6 @@ get_mesa_program(struct gl_context *ctx,
|
||||
target = GL_FRAGMENT_PROGRAM_ARB;
|
||||
target_string = "fragment";
|
||||
break;
|
||||
case GL_GEOMETRY_SHADER:
|
||||
target = GL_GEOMETRY_PROGRAM_NV;
|
||||
target_string = "geometry";
|
||||
break;
|
||||
default:
|
||||
assert(!"should not be reached");
|
||||
return NULL;
|
||||
@@ -3280,8 +3276,7 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
||||
if (linked_prog) {
|
||||
static const GLenum targets[] = {
|
||||
GL_VERTEX_PROGRAM_ARB,
|
||||
GL_FRAGMENT_PROGRAM_ARB,
|
||||
GL_GEOMETRY_PROGRAM_NV
|
||||
GL_FRAGMENT_PROGRAM_ARB
|
||||
};
|
||||
|
||||
if (i == MESA_SHADER_VERTEX) {
|
||||
|
||||
@@ -912,8 +912,6 @@ _mesa_fprint_program_opt(FILE *f,
|
||||
else
|
||||
fprintf(f, "# Fragment Program/Shader %u\n", prog->Id);
|
||||
break;
|
||||
case MESA_GEOMETRY_PROGRAM:
|
||||
fprintf(f, "# Geometry Shader\n");
|
||||
}
|
||||
|
||||
for (i = 0; i < prog->NumInstructions; i++) {
|
||||
@@ -1072,8 +1070,6 @@ _mesa_write_shader_to_file(const struct gl_shader *shader)
|
||||
type = "frag";
|
||||
else if (shader->Type == GL_VERTEX_SHADER)
|
||||
type = "vert";
|
||||
else
|
||||
type = "geom";
|
||||
|
||||
_mesa_snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type);
|
||||
f = fopen(filename, "w");
|
||||
|
||||
@@ -109,14 +109,6 @@ _mesa_init_program(struct gl_context *ctx)
|
||||
assert(ctx->FragmentProgram.Current);
|
||||
ctx->FragmentProgram.Cache = _mesa_new_program_cache();
|
||||
#endif
|
||||
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
ctx->GeometryProgram.Enabled = GL_FALSE;
|
||||
/* right now by default we don't have a geometry program */
|
||||
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram.Current,
|
||||
NULL);
|
||||
ctx->GeometryProgram.Cache = _mesa_new_program_cache();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -133,10 +125,6 @@ _mesa_free_program_data(struct gl_context *ctx)
|
||||
#if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program
|
||||
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram.Current, NULL);
|
||||
_mesa_delete_shader_cache(ctx, ctx->FragmentProgram.Cache);
|
||||
#endif
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram.Current, NULL);
|
||||
_mesa_delete_program_cache(ctx, ctx->GeometryProgram.Cache);
|
||||
#endif
|
||||
free((void *) ctx->Program.ErrorString);
|
||||
}
|
||||
@@ -163,12 +151,6 @@ _mesa_update_default_objects_program(struct gl_context *ctx)
|
||||
ctx->Shared->DefaultFragmentProgram);
|
||||
assert(ctx->FragmentProgram.Current);
|
||||
#endif
|
||||
|
||||
#if FEATURE_ARB_geometry_shader4
|
||||
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram.Current,
|
||||
(struct gl_geometry_program *)
|
||||
ctx->Shared->DefaultGeometryProgram);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -284,20 +266,6 @@ _mesa_init_vertex_program( struct gl_context *ctx, struct gl_vertex_program *pro
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialize a new geometry program object.
|
||||
*/
|
||||
struct gl_program *
|
||||
_mesa_init_geometry_program( struct gl_context *ctx, struct gl_geometry_program *prog,
|
||||
GLenum target, GLuint id)
|
||||
{
|
||||
if (prog)
|
||||
return _mesa_init_program_struct( ctx, &prog->Base, target, id );
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Allocate and initialize a new fragment/vertex program object but
|
||||
* don't put it into the program hash table. Called via
|
||||
@@ -326,11 +294,6 @@ _mesa_new_program(struct gl_context *ctx, GLenum target, GLuint id)
|
||||
CALLOC_STRUCT(gl_fragment_program),
|
||||
target, id );
|
||||
break;
|
||||
case MESA_GEOMETRY_PROGRAM:
|
||||
prog = _mesa_init_geometry_program(ctx,
|
||||
CALLOC_STRUCT(gl_geometry_program),
|
||||
target, id);
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "bad target in _mesa_new_program");
|
||||
prog = NULL;
|
||||
@@ -403,8 +366,6 @@ _mesa_reference_program_(struct gl_context *ctx,
|
||||
else if ((*ptr)->Target == GL_FRAGMENT_PROGRAM_ARB)
|
||||
ASSERT(prog->Target == GL_FRAGMENT_PROGRAM_ARB ||
|
||||
prog->Target == GL_FRAGMENT_PROGRAM_NV);
|
||||
else if ((*ptr)->Target == MESA_GEOMETRY_PROGRAM)
|
||||
ASSERT(prog->Target == MESA_GEOMETRY_PROGRAM);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -415,8 +376,7 @@ _mesa_reference_program_(struct gl_context *ctx,
|
||||
#if 0
|
||||
printf("Program %p ID=%u Target=%s Refcount-- to %d\n",
|
||||
*ptr, (*ptr)->Id,
|
||||
((*ptr)->Target == GL_VERTEX_PROGRAM_ARB ? "VP" :
|
||||
((*ptr)->Target == MESA_GEOMETRY_PROGRAM ? "GP" : "FP")),
|
||||
((*ptr)->Target == GL_VERTEX_PROGRAM_ARB ? "VP" : "FP")),
|
||||
(*ptr)->RefCount - 1);
|
||||
#endif
|
||||
ASSERT((*ptr)->RefCount > 0);
|
||||
@@ -440,8 +400,7 @@ _mesa_reference_program_(struct gl_context *ctx,
|
||||
#if 0
|
||||
printf("Program %p ID=%u Target=%s Refcount++ to %d\n",
|
||||
prog, prog->Id,
|
||||
(prog->Target == GL_VERTEX_PROGRAM_ARB ? "VP" :
|
||||
(prog->Target == MESA_GEOMETRY_PROGRAM ? "GP" : "FP")),
|
||||
(prog->Target == GL_VERTEX_PROGRAM_ARB ? "VP" : "FP")),
|
||||
prog->RefCount);
|
||||
#endif
|
||||
/*_glthread_UNLOCK_MUTEX(prog->Mutex);*/
|
||||
@@ -525,16 +484,6 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog)
|
||||
fpc->PixelCenterInteger = fp->PixelCenterInteger;
|
||||
}
|
||||
break;
|
||||
case MESA_GEOMETRY_PROGRAM:
|
||||
{
|
||||
const struct gl_geometry_program *gp
|
||||
= (const struct gl_geometry_program *) prog;
|
||||
struct gl_geometry_program *gpc = (struct gl_geometry_program *) clone;
|
||||
gpc->VerticesOut = gp->VerticesOut;
|
||||
gpc->InputType = gp->InputType;
|
||||
gpc->OutputType = gp->OutputType;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(NULL, "Unexpected target in _mesa_clone_program");
|
||||
}
|
||||
@@ -903,9 +852,6 @@ _mesa_valid_register_index(const struct gl_context *ctx,
|
||||
case MESA_SHADER_FRAGMENT:
|
||||
c = &ctx->Const.FragmentProgram;
|
||||
break;
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
c = &ctx->Const.GeometryProgram;
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx,
|
||||
"unexpected shader type in _mesa_valid_register_index()");
|
||||
@@ -947,8 +893,6 @@ _mesa_valid_register_index(const struct gl_context *ctx,
|
||||
return index < VERT_ATTRIB_GENERIC0 + c->MaxAttribs;
|
||||
case MESA_SHADER_FRAGMENT:
|
||||
return index < FRAG_ATTRIB_VAR0 + ctx->Const.MaxVarying;
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
return index < GEOM_ATTRIB_VAR0 + ctx->Const.MaxVarying;
|
||||
default:
|
||||
return GL_FALSE;
|
||||
}
|
||||
@@ -962,8 +906,6 @@ _mesa_valid_register_index(const struct gl_context *ctx,
|
||||
return index < VERT_RESULT_VAR0 + ctx->Const.MaxVarying;
|
||||
case MESA_SHADER_FRAGMENT:
|
||||
return index < FRAG_RESULT_DATA0 + ctx->Const.MaxDrawBuffers;
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
return index < GEOM_RESULT_VAR0 + ctx->Const.MaxVarying;
|
||||
default:
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
@@ -74,11 +74,6 @@ _mesa_init_fragment_program(struct gl_context *ctx,
|
||||
struct gl_fragment_program *prog,
|
||||
GLenum target, GLuint id);
|
||||
|
||||
extern struct gl_program *
|
||||
_mesa_init_geometry_program(struct gl_context *ctx,
|
||||
struct gl_geometry_program *prog,
|
||||
GLenum target, GLuint id);
|
||||
|
||||
extern struct gl_program *
|
||||
_mesa_new_program(struct gl_context *ctx, GLenum target, GLuint id);
|
||||
|
||||
@@ -120,15 +115,6 @@ _mesa_reference_fragprog(struct gl_context *ctx,
|
||||
(struct gl_program *) prog);
|
||||
}
|
||||
|
||||
static inline void
|
||||
_mesa_reference_geomprog(struct gl_context *ctx,
|
||||
struct gl_geometry_program **ptr,
|
||||
struct gl_geometry_program *prog)
|
||||
{
|
||||
_mesa_reference_program(ctx, (struct gl_program **) ptr,
|
||||
(struct gl_program *) prog);
|
||||
}
|
||||
|
||||
extern struct gl_program *
|
||||
_mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog);
|
||||
|
||||
@@ -139,13 +125,6 @@ _mesa_clone_vertex_program(struct gl_context *ctx,
|
||||
return (struct gl_vertex_program *) _mesa_clone_program(ctx, &prog->Base);
|
||||
}
|
||||
|
||||
static inline struct gl_geometry_program *
|
||||
_mesa_clone_geometry_program(struct gl_context *ctx,
|
||||
const struct gl_geometry_program *prog)
|
||||
{
|
||||
return (struct gl_geometry_program *) _mesa_clone_program(ctx, &prog->Base);
|
||||
}
|
||||
|
||||
static inline struct gl_fragment_program *
|
||||
_mesa_clone_fragment_program(struct gl_context *ctx,
|
||||
const struct gl_fragment_program *prog)
|
||||
@@ -194,8 +173,6 @@ _mesa_program_target_to_index(GLenum v)
|
||||
return MESA_SHADER_VERTEX;
|
||||
case GL_FRAGMENT_PROGRAM_ARB:
|
||||
return MESA_SHADER_FRAGMENT;
|
||||
case GL_GEOMETRY_PROGRAM_NV:
|
||||
return MESA_SHADER_GEOMETRY;
|
||||
default:
|
||||
ASSERT(0);
|
||||
return ~0;
|
||||
@@ -207,8 +184,7 @@ _mesa_program_index_to_target(GLuint i)
|
||||
{
|
||||
GLenum enums[MESA_SHADER_TYPES] = {
|
||||
GL_VERTEX_PROGRAM_ARB,
|
||||
GL_FRAGMENT_PROGRAM_ARB,
|
||||
GL_GEOMETRY_PROGRAM_NV,
|
||||
GL_FRAGMENT_PROGRAM_ARB
|
||||
};
|
||||
if(i >= MESA_SHADER_TYPES)
|
||||
return 0;
|
||||
|
||||
@@ -771,7 +771,6 @@ _swrast_CreateContext( struct gl_context *ctx )
|
||||
swrast->PointSpan.array = swrast->SpanArrays;
|
||||
|
||||
init_program_native_limits(&ctx->Const.VertexProgram);
|
||||
init_program_native_limits(&ctx->Const.GeometryProgram);
|
||||
init_program_native_limits(&ctx->Const.FragmentProgram);
|
||||
|
||||
ctx->swrast_context = swrast;
|
||||
|
||||
@@ -85,29 +85,6 @@ static void free_space(struct gl_context *ctx)
|
||||
} while (0)
|
||||
|
||||
|
||||
/**
|
||||
* Convert array of BGRA/GLubyte[4] values to RGBA/float[4]
|
||||
* \param ptr input/ubyte array
|
||||
* \param fptr output/float array
|
||||
*/
|
||||
static void
|
||||
convert_bgra_to_float(const struct gl_client_array *input,
|
||||
const GLubyte *ptr, GLfloat *fptr,
|
||||
GLuint count )
|
||||
{
|
||||
GLuint i;
|
||||
assert(input->Normalized);
|
||||
assert(input->Size == 4);
|
||||
for (i = 0; i < count; i++) {
|
||||
const GLubyte *in = (GLubyte *) ptr; /* in is in BGRA order */
|
||||
*fptr++ = UBYTE_TO_FLOAT(in[2]); /* red */
|
||||
*fptr++ = UBYTE_TO_FLOAT(in[1]); /* green */
|
||||
*fptr++ = UBYTE_TO_FLOAT(in[0]); /* blue */
|
||||
*fptr++ = UBYTE_TO_FLOAT(in[3]); /* alpha */
|
||||
ptr += input->StrideB;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
convert_half_to_float(const struct gl_client_array *input,
|
||||
const GLubyte *ptr, GLfloat *fptr,
|
||||
@@ -185,13 +162,7 @@ static void _tnl_import_array( struct gl_context *ctx,
|
||||
CONVERT(GLbyte, BYTE_TO_FLOAT);
|
||||
break;
|
||||
case GL_UNSIGNED_BYTE:
|
||||
if (input->Format == GL_BGRA) {
|
||||
/* See GL_EXT_vertex_array_bgra */
|
||||
convert_bgra_to_float(input, ptr, fptr, count);
|
||||
}
|
||||
else {
|
||||
CONVERT(GLubyte, UBYTE_TO_FLOAT);
|
||||
}
|
||||
CONVERT(GLubyte, UBYTE_TO_FLOAT);
|
||||
break;
|
||||
case GL_SHORT:
|
||||
CONVERT(GLshort, SHORT_TO_FLOAT);
|
||||
|
||||
@@ -82,10 +82,7 @@ static void TAG(render_lines)( struct gl_context *ctx,
|
||||
INIT(GL_LINES);
|
||||
for (j=start+1; j<count; j+=2 ) {
|
||||
RESET_STIPPLE;
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_LINE( ELT(j-1), ELT(j) );
|
||||
else
|
||||
RENDER_LINE( ELT(j), ELT(j-1) );
|
||||
RENDER_LINE( ELT(j-1), ELT(j) );
|
||||
}
|
||||
POSTFIX;
|
||||
}
|
||||
@@ -107,10 +104,7 @@ static void TAG(render_line_strip)( struct gl_context *ctx,
|
||||
}
|
||||
|
||||
for (j=start+1; j<count; j++ ) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_LINE( ELT(j-1), ELT(j) );
|
||||
else
|
||||
RENDER_LINE( ELT(j), ELT(j-1) );
|
||||
RENDER_LINE( ELT(j-1), ELT(j) );
|
||||
}
|
||||
POSTFIX;
|
||||
}
|
||||
@@ -131,24 +125,15 @@ static void TAG(render_line_loop)( struct gl_context *ctx,
|
||||
if (start+1 < count) {
|
||||
if (TEST_PRIM_BEGIN(flags)) {
|
||||
RESET_STIPPLE;
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_LINE( ELT(start), ELT(start+1) );
|
||||
else
|
||||
RENDER_LINE( ELT(start+1), ELT(start) );
|
||||
RENDER_LINE( ELT(start), ELT(start+1) );
|
||||
}
|
||||
|
||||
for ( i = start+2 ; i < count ; i++) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_LINE( ELT(i-1), ELT(i) );
|
||||
else
|
||||
RENDER_LINE( ELT(i), ELT(i-1) );
|
||||
RENDER_LINE( ELT(i-1), ELT(i) );
|
||||
}
|
||||
|
||||
if ( TEST_PRIM_END(flags)) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_LINE( ELT(count-1), ELT(start) );
|
||||
else
|
||||
RENDER_LINE( ELT(start), ELT(count-1) );
|
||||
RENDER_LINE( ELT(count-1), ELT(start) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,17 +156,11 @@ static void TAG(render_triangles)( struct gl_context *ctx,
|
||||
/* Leave the edgeflags as supplied by the user.
|
||||
*/
|
||||
RESET_STIPPLE;
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
|
||||
else
|
||||
RENDER_TRI( ELT(j-1), ELT(j), ELT(j-2) );
|
||||
RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
|
||||
}
|
||||
} else {
|
||||
for (j=start+2; j<count; j+=3) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
|
||||
else
|
||||
RENDER_TRI( ELT(j-1), ELT(j), ELT(j-2) );
|
||||
RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
|
||||
}
|
||||
}
|
||||
POSTFIX;
|
||||
@@ -203,16 +182,9 @@ static void TAG(render_tri_strip)( struct gl_context *ctx,
|
||||
for (j=start+2;j<count;j++,parity^=1) {
|
||||
GLuint ej2, ej1, ej;
|
||||
GLboolean ef2, ef1, ef;
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT) {
|
||||
ej2 = ELT(j-2+parity);
|
||||
ej1 = ELT(j-1-parity);
|
||||
ej = ELT(j);
|
||||
}
|
||||
else {
|
||||
ej2 = ELT(j-1+parity);
|
||||
ej1 = ELT(j-parity);
|
||||
ej = ELT(j-2);
|
||||
}
|
||||
ej2 = ELT(j-2+parity);
|
||||
ej1 = ELT(j-1-parity);
|
||||
ej = ELT(j);
|
||||
ef2 = EDGEFLAG_GET( ej2 );
|
||||
ef1 = EDGEFLAG_GET( ej1 );
|
||||
ef = EDGEFLAG_GET( ej );
|
||||
@@ -229,10 +201,7 @@ static void TAG(render_tri_strip)( struct gl_context *ctx,
|
||||
}
|
||||
} else {
|
||||
for (j=start+2; j<count ; j++, parity^=1) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_TRI( ELT(j-2+parity), ELT(j-1-parity), ELT(j) );
|
||||
else
|
||||
RENDER_TRI( ELT(j-1+parity), ELT(j-parity), ELT(j-2) );
|
||||
RENDER_TRI( ELT(j-2+parity), ELT(j-1-parity), ELT(j) );
|
||||
}
|
||||
}
|
||||
POSTFIX;
|
||||
@@ -265,20 +234,14 @@ static void TAG(render_tri_fan)( struct gl_context *ctx,
|
||||
EDGEFLAG_SET( ejs, GL_TRUE );
|
||||
EDGEFLAG_SET( ej1, GL_TRUE );
|
||||
EDGEFLAG_SET( ej, GL_TRUE );
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_TRI( ejs, ej1, ej);
|
||||
else
|
||||
RENDER_TRI( ej, ejs, ej1);
|
||||
RENDER_TRI( ejs, ej1, ej);
|
||||
EDGEFLAG_SET( ejs, efs );
|
||||
EDGEFLAG_SET( ej1, ef1 );
|
||||
EDGEFLAG_SET( ej, ef );
|
||||
}
|
||||
} else {
|
||||
for (j=start+2;j<count;j++) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
|
||||
RENDER_TRI( ELT(start), ELT(j-1), ELT(j) );
|
||||
else
|
||||
RENDER_TRI( ELT(j), ELT(start), ELT(j-1) );
|
||||
RENDER_TRI( ELT(start), ELT(j-1), ELT(j) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -367,22 +330,14 @@ static void TAG(render_quads)( struct gl_context *ctx,
|
||||
INIT(GL_QUADS);
|
||||
if (NEED_EDGEFLAG_SETUP) {
|
||||
for (j=start+3; j<count; j+=4) {
|
||||
/* Use user-specified edgeflags for quads.
|
||||
*/
|
||||
RESET_STIPPLE;
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
|
||||
!ctx->Const.QuadsFollowProvokingVertexConvention)
|
||||
RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
|
||||
else
|
||||
RENDER_QUAD( ELT(j-2), ELT(j-1), ELT(j), ELT(j-3) );
|
||||
/* Use user-specified edgeflags for quads.
|
||||
*/
|
||||
RESET_STIPPLE;
|
||||
RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
|
||||
}
|
||||
} else {
|
||||
for (j=start+3; j<count; j+=4) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
|
||||
!ctx->Const.QuadsFollowProvokingVertexConvention)
|
||||
RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
|
||||
else
|
||||
RENDER_QUAD( ELT(j-2), ELT(j-1), ELT(j), ELT(j-3) );
|
||||
RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
|
||||
}
|
||||
}
|
||||
POSTFIX;
|
||||
@@ -414,11 +369,7 @@ static void TAG(render_quad_strip)( struct gl_context *ctx,
|
||||
EDGEFLAG_SET( ELT(j-2), GL_TRUE );
|
||||
EDGEFLAG_SET( ELT(j-1), GL_TRUE );
|
||||
EDGEFLAG_SET( ELT(j), GL_TRUE );
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
|
||||
!ctx->Const.QuadsFollowProvokingVertexConvention)
|
||||
RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
|
||||
else
|
||||
RENDER_QUAD( ELT(j-2), ELT(j), ELT(j-1), ELT(j-3) );
|
||||
RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
|
||||
EDGEFLAG_SET( ELT(j-3), ef3 );
|
||||
EDGEFLAG_SET( ELT(j-2), ef2 );
|
||||
EDGEFLAG_SET( ELT(j-1), ef1 );
|
||||
@@ -426,11 +377,7 @@ static void TAG(render_quad_strip)( struct gl_context *ctx,
|
||||
}
|
||||
} else {
|
||||
for (j=start+3;j<count;j+=2) {
|
||||
if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
|
||||
!ctx->Const.QuadsFollowProvokingVertexConvention)
|
||||
RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
|
||||
else
|
||||
RENDER_QUAD( ELT(j-2), ELT(j), ELT(j-1), ELT(j-3) );
|
||||
RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
|
||||
}
|
||||
}
|
||||
POSTFIX;
|
||||
|
||||
@@ -65,7 +65,6 @@ static void init_legacy_currval(struct gl_context *ctx)
|
||||
cl->StrideB = 0;
|
||||
cl->Enabled = 1;
|
||||
cl->Type = GL_FLOAT;
|
||||
cl->Format = GL_RGBA;
|
||||
cl->Ptr = (const void *)ctx->Current.Attrib[i];
|
||||
cl->_ElementSize = cl->Size * sizeof(GLfloat);
|
||||
_mesa_reference_buffer_object(ctx, &cl->BufferObj,
|
||||
@@ -89,7 +88,6 @@ static void init_generic_currval(struct gl_context *ctx)
|
||||
*/
|
||||
cl->Size = 1;
|
||||
cl->Type = GL_FLOAT;
|
||||
cl->Format = GL_RGBA;
|
||||
cl->Ptr = (const void *)ctx->Current.Attrib[VERT_ATTRIB_GENERIC0 + i];
|
||||
cl->Stride = 0;
|
||||
cl->StrideB = 0;
|
||||
@@ -136,7 +134,6 @@ static void init_mat_currval(struct gl_context *ctx)
|
||||
|
||||
cl->Ptr = (const void *)ctx->Light.Material.Attrib[i];
|
||||
cl->Type = GL_FLOAT;
|
||||
cl->Format = GL_RGBA;
|
||||
cl->Stride = 0;
|
||||
cl->StrideB = 0;
|
||||
cl->Enabled = 1;
|
||||
|
||||
@@ -242,7 +242,6 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
|
||||
arrays[attr].StrideB = exec->vtx.vertex_size * sizeof(GLfloat);
|
||||
arrays[attr].Stride = exec->vtx.vertex_size * sizeof(GLfloat);
|
||||
arrays[attr].Type = GL_FLOAT;
|
||||
arrays[attr].Format = GL_RGBA;
|
||||
arrays[attr].Enabled = 1;
|
||||
arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat);
|
||||
_mesa_reference_buffer_object(ctx,
|
||||
|
||||
@@ -195,7 +195,6 @@ static void vbo_bind_vertex_list(struct gl_context *ctx,
|
||||
arrays[attr].StrideB = node->vertex_size * sizeof(GLfloat);
|
||||
arrays[attr].Stride = node->vertex_size * sizeof(GLfloat);
|
||||
arrays[attr].Type = GL_FLOAT;
|
||||
arrays[attr].Format = GL_RGBA;
|
||||
arrays[attr].Enabled = 1;
|
||||
arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat);
|
||||
_mesa_reference_buffer_object(ctx,
|
||||
|
||||
@@ -512,7 +512,6 @@ replay_init( struct copy_context *copy )
|
||||
|
||||
dst->Size = src->Size;
|
||||
dst->Type = src->Type;
|
||||
dst->Format = GL_RGBA;
|
||||
dst->Stride = copy->vertex_size;
|
||||
dst->StrideB = copy->vertex_size;
|
||||
dst->Ptr = copy->dstbuf + offset;
|
||||
|
||||
Reference in New Issue
Block a user