- 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:
Jérôme Gardou
2013-10-01 21:37:39 +00:00
parent 18cdde3bad
commit dc33940df2
49 changed files with 42 additions and 1124 deletions
@@ -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;
+3 -23
View File
@@ -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];
+1 -3
View File
@@ -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
+1 -140
View File
@@ -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);
+7 -27
View File
@@ -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;
+1 -30
View File
@@ -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;