On Sat, Oct 21, 2017 at 8:54 AM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > We already have piglit tests testing alpha, luminance, and intensity > formats. They were skipped by piglit until now. > > Additionally, I'm enabling one ARB_texture_buffer_range piglit test to run > with the compat profile. > --- > src/mapi/glapi/gen/apiexec.py | 12 +++++------- > src/mesa/drivers/dri/i965/intel_extensions.c | 8 +++++--- > src/mesa/main/extensions_table.h | 6 +++--- > src/mesa/main/get.c | 2 -- > src/mesa/main/get_hash_params.py | 20 ++++++++++---------- > src/mesa/main/tests/dispatch_sanity.cpp | 8 ++++---- > src/mesa/main/texparam.c | 4 ++-- > src/mesa/state_tracker/st_context.c | 2 +- > src/mesa/state_tracker/st_extensions.c | 8 +++++++- > src/mesa/state_tracker/st_extensions.h | 3 ++- > src/mesa/state_tracker/st_manager.c | 2 +- > 11 files changed, 40 insertions(+), 35 deletions(-) > > diff --git a/src/mapi/glapi/gen/apiexec.py b/src/mapi/glapi/gen/apiexec.py > index 61eda4b..7da0818 100644 > --- a/src/mapi/glapi/gen/apiexec.py > +++ b/src/mapi/glapi/gen/apiexec.py > @@ -28,21 +28,21 @@ class exec_info(): > 10). For example, glCreateProgram was added in OpenGL 2.0, so > compatibility=20 and core=31. > > If the attribute is None, then it cannot be supported by that > API. For example, glNewList was removed from core profiles, so > compatibility=10 and core=None. > > Each of the attributes that is not None must have a valid value. The > valid ranges are: > > - compatiblity: [10, 30] > + compatibility: [10, ) > core: [31, ) > es1: [10, 11] > es2: [20, ) > > These ranges are enforced by the constructor. > """ > def __init__(self, compatibility=None, core=None, es1=None, es2=None): > if compatibility is not None: > assert isinstance(compatibility, int) > assert compatibility >= 10 > @@ -59,23 +59,22 @@ class exec_info(): > if es2 is not None: > assert isinstance(es2, int) > assert es2 >= 20 > > self.compatibility = compatibility > self.core = core > self.es1 = es1 > self.es2 = es2 > > functions = { > - # OpenGL 3.1 / GL_ARB_texture_buffer_object. Mesa only exposes this > - # extension with core profile. > - "TexBuffer": exec_info(core=31, es2=31), > + # OpenGL 3.1 / GL_ARB_texture_buffer_object. > + "TexBuffer": exec_info(compatibility=20, core=31, es2=31), > > # OpenGL 3.2 / GL_OES_geometry_shader. > "FramebufferTexture": exec_info(core=32, es2=31), > > # OpenGL 4.0 / GL_ARB_shader_subroutines. Mesa only exposes this > # extension with core profile. > "GetSubroutineUniformLocation": exec_info(core=31), > "GetSubroutineIndex": exec_info(core=31), > "GetActiveSubroutineUniformiv": exec_info(core=31), > "GetActiveSubroutineUniformName": exec_info(core=31), > @@ -137,23 +136,22 @@ functions = { > "ViewportIndexedf": exec_info(core=32, es2=31), > "ViewportIndexedfv": exec_info(core=32, es2=31), > "ScissorArrayv": exec_info(core=32, es2=31), > "ScissorIndexed": exec_info(core=32, es2=31), > "ScissorIndexedv": exec_info(core=32, es2=31), > "DepthRangeArrayv": exec_info(core=32), > "DepthRangeIndexed": exec_info(core=32), > # GetFloati_v also GL_ARB_shader_atomic_counters > # GetDoublei_v also GL_ARB_shader_atomic_counters > > - # OpenGL 4.3 / GL_ARB_texture_buffer_range. Mesa can expose the > extension > - # with OpenGL 3.1. > - "TexBufferRange": exec_info(core=31, es2=31), > + # OpenGL 4.3 / GL_ARB_texture_buffer_range. > + "TexBufferRange": exec_info(compatibility=20, core=31, es2=31), > > # OpenGL 4.3 / GL_ARB_framebuffer_no_attachments. Mesa can expose the > # extension with OpenGL 3.0. > "FramebufferParameteri": exec_info(compatibility=30, core=31, es2=31), > "GetFramebufferParameteri": exec_info(compatibility=30, core=31, es2=31), > > # OpenGL 4.5 / GL_ARB_direct_state_access. Mesa can expose the > extension > # with core profile. > "CreateTransformFeedbacks": exec_info(core=31), > "TransformFeedbackBufferBase": exec_info(core=31), > diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c > b/src/mesa/drivers/dri/i965/intel_extensions.c > index 519d0a5..21cf632 100644 > --- a/src/mesa/drivers/dri/i965/intel_extensions.c > +++ b/src/mesa/drivers/dri/i965/intel_extensions.c > @@ -171,23 +171,25 @@ intelInitExtensions(struct gl_context *ctx) > !driQueryOptionb(&brw->optionCache, "disable_blend_func_extended"); > ctx->Extensions.ARB_conditional_render_inverted = true; > ctx->Extensions.ARB_cull_distance = true; > ctx->Extensions.ARB_draw_buffers_blend = true; > ctx->Extensions.ARB_enhanced_layouts = true; > ctx->Extensions.ARB_ES3_compatibility = true; > ctx->Extensions.ARB_fragment_layer_viewport = true; > ctx->Extensions.ARB_pipeline_statistics_query = true; > ctx->Extensions.ARB_sample_shading = true; > ctx->Extensions.ARB_shading_language_420pack = true; > - ctx->Extensions.ARB_texture_buffer_object = true; > - ctx->Extensions.ARB_texture_buffer_object_rgb32 = true; > - ctx->Extensions.ARB_texture_buffer_range = true; > + if (ctx->API == API_OPENGL_CORE) {
Should probably be if (ctx->API != API_OPENGL_COMPAT) { ... } > + ctx->Extensions.ARB_texture_buffer_object = true; > + ctx->Extensions.ARB_texture_buffer_object_rgb32 = true; > + ctx->Extensions.ARB_texture_buffer_range = true; > + } > ctx->Extensions.ARB_texture_cube_map_array = true; > ctx->Extensions.ARB_texture_gather = true; > ctx->Extensions.ARB_texture_multisample = true; > ctx->Extensions.ARB_uniform_buffer_object = true; > > ctx->Extensions.AMD_vertex_shader_layer = true; > ctx->Extensions.EXT_framebuffer_multisample = true; > ctx->Extensions.EXT_framebuffer_multisample_blit_scaled = true; > ctx->Extensions.EXT_transform_feedback = true; > ctx->Extensions.ARB_transform_feedback_overflow_query = true; > diff --git a/src/mesa/main/extensions_table.h > b/src/mesa/main/extensions_table.h > index 2075311..e26d395 100644 > --- a/src/mesa/main/extensions_table.h > +++ b/src/mesa/main/extensions_table.h > @@ -126,23 +126,23 @@ EXT(ARB_shader_viewport_layer_array , > ARB_shader_viewport_layer_array > EXT(ARB_shading_language_100 , dummy_true > , GLL, x , x , x , 2003) > EXT(ARB_shading_language_420pack , ARB_shading_language_420pack > , GLL, GLC, x , x , 2011) > EXT(ARB_shading_language_packing , ARB_shading_language_packing > , GLL, GLC, x , x , 2011) > EXT(ARB_shadow , ARB_shadow > , GLL, x , x , x , 2001) > EXT(ARB_sparse_buffer , ARB_sparse_buffer > , GLL, GLC, x , x , 2014) > EXT(ARB_stencil_texturing , ARB_stencil_texturing > , GLL, GLC, x , x , 2012) > EXT(ARB_sync , ARB_sync > , GLL, GLC, x , x , 2003) > EXT(ARB_tessellation_shader , ARB_tessellation_shader > , x , GLC, x , x , 2009) > EXT(ARB_texture_barrier , NV_texture_barrier > , GLL, GLC, x , x , 2014) > EXT(ARB_texture_border_clamp , ARB_texture_border_clamp > , GLL, x , x , x , 2000) > -EXT(ARB_texture_buffer_object , ARB_texture_buffer_object > , x , GLC, x , x , 2008) > -EXT(ARB_texture_buffer_object_rgb32 , > ARB_texture_buffer_object_rgb32 , x , GLC, x , x , 2009) > -EXT(ARB_texture_buffer_range , ARB_texture_buffer_range > , x , GLC, x , x , 2012) > +EXT(ARB_texture_buffer_object , ARB_texture_buffer_object > , GLL, GLC, x , x , 2008) > +EXT(ARB_texture_buffer_object_rgb32 , > ARB_texture_buffer_object_rgb32 , GLL, GLC, x , x , 2009) > +EXT(ARB_texture_buffer_range , ARB_texture_buffer_range > , GLL, GLC, x , x , 2012) > EXT(ARB_texture_compression , dummy_true > , GLL, x , x , x , 2000) > EXT(ARB_texture_compression_bptc , ARB_texture_compression_bptc > , GLL, GLC, x , x , 2010) > EXT(ARB_texture_compression_rgtc , ARB_texture_compression_rgtc > , GLL, GLC, x , x , 2004) > EXT(ARB_texture_cube_map , ARB_texture_cube_map > , GLL, x , x , x , 1999) > EXT(ARB_texture_cube_map_array , ARB_texture_cube_map_array > , GLL, GLC, x , x , 2009) > EXT(ARB_texture_env_add , dummy_true > , GLL, x , x , x , 1999) > EXT(ARB_texture_env_combine , ARB_texture_env_combine > , GLL, x , x , x , 2001) > EXT(ARB_texture_env_crossbar , ARB_texture_env_crossbar > , GLL, x , x , x , 2001) > EXT(ARB_texture_env_dot3 , ARB_texture_env_dot3 > , GLL, x , x , x , 2001) > EXT(ARB_texture_filter_anisotropic , ARB_texture_filter_anisotropic > , GLL, GLC, x , x , 2017) > diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c > index e68a93b..ea8d932 100644 > --- a/src/mesa/main/get.c > +++ b/src/mesa/main/get.c > @@ -302,22 +302,20 @@ static const int > extra_EXT_texture_integer_and_new_buffers[] = { > EXTRA_END > }; > > static const int extra_GLSL_130_es3[] = { > EXTRA_GLSL_130, > EXTRA_API_ES3, > EXTRA_END > }; > > static const int extra_texture_buffer_object[] = { > - EXTRA_API_GL_CORE, > - EXTRA_VERSION_31, > EXT(ARB_texture_buffer_object), > EXTRA_END > }; > > static const int extra_ARB_transform_feedback2_api_es3[] = { > EXT(ARB_transform_feedback2), > EXTRA_API_ES3, > EXTRA_END > }; > > diff --git a/src/mesa/main/get_hash_params.py > b/src/mesa/main/get_hash_params.py > index acd5cd1..20ef6e4 100644 > --- a/src/mesa/main/get_hash_params.py > +++ b/src/mesa/main/get_hash_params.py > @@ -435,20 +435,30 @@ descriptor=[ > # fetch extension is supported since the latter imposes no restrictions on > # non-uniform per-sample discard. > [ "FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT", > "CONTEXT_BOOL(Extensions.MESA_shader_framebuffer_fetch), > extra_EXT_shader_framebuffer_fetch" ], > # GL_OES_EGL_image_external > [ "TEXTURE_BINDING_EXTERNAL_OES", "LOC_CUSTOM, TYPE_INT, > TEXTURE_EXTERNAL_INDEX, extra_OES_EGL_image_external" ], > [ "TEXTURE_EXTERNAL_OES", "LOC_CUSTOM, TYPE_BOOLEAN, 0, > extra_OES_EGL_image_external" ], > ]}, > > # Enums in OpenGL and ES 3.1 > { "apis": ["GL", "GL_CORE", "GLES31"], "params": [ > +# GL_ARB_texture_buffer_object / GL_OES_texture_buffer > + [ "MAX_TEXTURE_BUFFER_SIZE_ARB", "CONTEXT_INT(Const.MaxTextureBufferSize), > extra_texture_buffer_object" ], > + [ "TEXTURE_BINDING_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, > extra_texture_buffer_object" ], > + [ "TEXTURE_BUFFER_DATA_STORE_BINDING_ARB", "LOC_CUSTOM, TYPE_INT, > TEXTURE_BUFFER_INDEX, extra_texture_buffer_object" ], > + [ "TEXTURE_BUFFER_FORMAT_ARB", "LOC_CUSTOM, TYPE_INT, 0, > extra_texture_buffer_object" ], > + [ "TEXTURE_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, > extra_texture_buffer_object" ], > + > +# GL_ARB_texture_buffer_range > + [ "TEXTURE_BUFFER_OFFSET_ALIGNMENT", > "CONTEXT_INT(Const.TextureBufferOffsetAlignment), > extra_ARB_texture_buffer_range" ], > + > # GL_ARB_shader_image_load_store / GLES 3.1 > [ "MAX_IMAGE_UNITS", "CONTEXT_INT(Const.MaxImageUnits), > extra_ARB_shader_image_load_store" ], > [ "MAX_VERTEX_IMAGE_UNIFORMS", > "CONTEXT_INT(Const.Program[MESA_SHADER_VERTEX].MaxImageUniforms), > extra_ARB_shader_image_load_store" ], > [ "MAX_FRAGMENT_IMAGE_UNIFORMS", > "CONTEXT_INT(Const.Program[MESA_SHADER_FRAGMENT].MaxImageUniforms), > extra_ARB_shader_image_load_store" ], > [ "MAX_COMBINED_IMAGE_UNIFORMS", > "CONTEXT_INT(Const.MaxCombinedImageUniforms), > extra_ARB_shader_image_load_store" ], > > # GL_ARB_shader_atomic_counters / GLES 3.1 > [ "ATOMIC_COUNTER_BUFFER_BINDING", "LOC_CUSTOM, TYPE_INT, 0, > extra_ARB_shader_atomic_counters" ], > [ "MAX_ATOMIC_COUNTER_BUFFER_BINDINGS", > "CONTEXT_INT(Const.MaxAtomicBufferBindings), > extra_ARB_shader_atomic_counters" ], > [ "MAX_ATOMIC_COUNTER_BUFFER_SIZE", > "CONTEXT_INT(Const.MaxAtomicBufferSize), extra_ARB_shader_atomic_counters" ], > @@ -595,30 +605,20 @@ descriptor=[ > # GL_ARB_uniform_buffer_object / geometry shader > [ "MAX_GEOMETRY_UNIFORM_BLOCKS", > "CONTEXT_INT(Const.Program[MESA_SHADER_GEOMETRY].MaxUniformBlocks), > extra_ARB_uniform_buffer_object_and_geometry_shader" ], > [ "MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", > "CONTEXT_INT(Const.Program[MESA_SHADER_GEOMETRY].MaxCombinedUniformComponents), > extra_ARB_uniform_buffer_object_and_geometry_shader" ], > > # GL_ARB_viewport_array / GL_OES_geometry_shader > [ "LAYER_PROVOKING_VERTEX", > "CONTEXT_ENUM(Const.LayerAndVPIndexProvokingVertex), > extra_ARB_viewport_array_or_oes_geometry_shader" ], > > # GL_ARB_gpu_shader5 / GL_OES_geometry_shader > [ "MAX_GEOMETRY_SHADER_INVOCATIONS", > "CONST(MAX_GEOMETRY_SHADER_INVOCATIONS), > extra_ARB_gpu_shader5_or_oes_geometry_shader" ], > > -# GL_ARB_texture_buffer_object / GL_OES_texture_buffer > - [ "MAX_TEXTURE_BUFFER_SIZE_ARB", "CONTEXT_INT(Const.MaxTextureBufferSize), > extra_texture_buffer_object" ], > - [ "TEXTURE_BINDING_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, > extra_texture_buffer_object" ], > - [ "TEXTURE_BUFFER_DATA_STORE_BINDING_ARB", "LOC_CUSTOM, TYPE_INT, > TEXTURE_BUFFER_INDEX, extra_texture_buffer_object" ], > - [ "TEXTURE_BUFFER_FORMAT_ARB", "LOC_CUSTOM, TYPE_INT, 0, > extra_texture_buffer_object" ], > - [ "TEXTURE_BUFFER_ARB", "LOC_CUSTOM, TYPE_INT, 0, > extra_texture_buffer_object" ], > - > -# GL_ARB_texture_buffer_range > - [ "TEXTURE_BUFFER_OFFSET_ALIGNMENT", > "CONTEXT_INT(Const.TextureBufferOffsetAlignment), > extra_ARB_texture_buffer_range" ], > - > # GL_OES_primitive_bounding_box > [ "PRIMITIVE_BOUNDING_BOX_ARB", "CONTEXT_FLOAT8(PrimitiveBoundingBox), > extra_OES_primitive_bounding_box" ], > > # GL_ARB_viewport_array / GL_OES_viewport_array > [ "MAX_VIEWPORTS", "CONTEXT_INT(Const.MaxViewports), > extra_ARB_viewport_array_or_oes_viewport_array" ], > [ "VIEWPORT_SUBPIXEL_BITS", "CONTEXT_INT(Const.ViewportSubpixelBits), > extra_ARB_viewport_array_or_oes_viewport_array" ], > [ "VIEWPORT_BOUNDS_RANGE", "CONTEXT_FLOAT2(Const.ViewportBounds), > extra_ARB_viewport_array_or_oes_viewport_array" ], > [ "VIEWPORT_INDEX_PROVOKING_VERTEX", > "CONTEXT_ENUM(Const.LayerAndVPIndexProvokingVertex), > extra_ARB_viewport_array_or_oes_viewport_array" ], > > # INTEL_conservative_rasterization > diff --git a/src/mesa/main/tests/dispatch_sanity.cpp > b/src/mesa/main/tests/dispatch_sanity.cpp > index aea9ffb..a46ff38 100644 > --- a/src/mesa/main/tests/dispatch_sanity.cpp > +++ b/src/mesa/main/tests/dispatch_sanity.cpp > @@ -497,20 +497,24 @@ const struct function > common_desktop_functions_possible[] = { > { "glClearBufferiv", 30, -1 }, > { "glClearBufferuiv", 30, -1 }, > { "glClearBufferfv", 30, -1 }, > { "glClearBufferfi", 30, -1 }, > { "glGetStringi", 30, -1 }, > > /* GL 3.1 */ > { "glDrawArraysInstanced", 31, -1 }, > { "glDrawElementsInstanced", 31, -1 }, > { "glPrimitiveRestartIndex", 31, -1 }, > + { "glTexBuffer", 31, -1 }, > + > + /* GL_ARB_texture_buffer_range */ > + { "glTexBufferRange", 43, -1 }, > > /* GL_ARB_shader_objects */ > { "glDeleteObjectARB", 31, -1 }, > { "glGetHandleARB", 31, -1 }, > { "glDetachObjectARB", 31, -1 }, > { "glCreateShaderObjectARB", 31, -1 }, > { "glCreateProgramObjectARB", 31, -1 }, > { "glAttachObjectARB", 31, -1 }, > { "glGetObjectParameterfvARB", 31, -1 }, > { "glGetObjectParameterivARB", 31, -1 }, > @@ -1494,23 +1498,20 @@ const struct function > gl_compatibility_functions_possible[] = { > { "glActiveStencilFaceEXT", 10, -1 }, > { "glStencilFuncSeparateATI", 10, -1 }, > { "glProgramEnvParameters4fvEXT", 10, -1 }, > { "glProgramLocalParameters4fvEXT", 10, -1 }, > { "glPrimitiveRestartNV", 10, -1 }, > > { NULL, 0, -1 } > }; > > const struct function gl_core_functions_possible[] = { > - /* GL 3.1 */ > - { "glTexBuffer", 31, -1 }, > - > /* GL 3.2 */ > { "glFramebufferTexture", 32, -1 }, > > /* GL 4.0 */ > { "glGetSubroutineUniformLocation", 40, -1 }, > { "glGetSubroutineIndex", 40, -1 }, > { "glGetActiveSubroutineUniformiv", 40, -1 }, > { "glGetActiveSubroutineUniformName", 40, -1 }, > { "glGetActiveSubroutineName", 40, -1 }, > { "glUniformSubroutinesuiv", 40, -1 }, > @@ -1801,21 +1802,20 @@ const struct function gl_core_functions_possible[] = { > { "glInvalidateSubFramebuffer", 43, -1 }, > { "glMultiDrawArraysIndirect", 43, -1 }, > { "glMultiDrawElementsIndirect", 43, -1 }, > { "glGetProgramInterfaceiv", 43, -1 }, > { "glGetProgramResourceIndex", 43, -1 }, > { "glGetProgramResourceName", 43, -1 }, > { "glGetProgramResourceiv", 43, -1 }, > { "glGetProgramResourceLocation", 43, -1 }, > { "glGetProgramResourceLocationIndex", 43, -1 }, > // { "glShaderStorageBlockBinding", 43, -1 }, // XXX: Add to xml > - { "glTexBufferRange", 43, -1 }, > // { "glTextureBufferRangeEXT", 43, -1 }, // XXX: Add to xml > { "glTexStorage2DMultisample", 43, -1 }, > { "glTexStorage3DMultisample", 43, -1 }, > // { "glTextureStorage2DMultisampleEXT", 43, -1 }, // XXX: Add to xml > // { "glTextureStorage3DMultisampleEXT", 43, -1 }, // XXX: Add to xml > > /* GL 4.5 */ > { "glMemoryBarrierByRegion", 45, -1 }, > > /* GL_ARB_direct_state_access */ > diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c > index 039b933..4a0f61e 100644 > --- a/src/mesa/main/texparam.c > +++ b/src/mesa/main/texparam.c > @@ -1280,22 +1280,22 @@ _mesa_legal_get_tex_level_parameter_target(struct > gl_context *ctx, GLenum target > * RESOLVED: No. [...] Note that the spec edits above don't add > * explicit error language for any of these cases. That is because > * each of the functions enumerate the set of valid <target> > * parameters. Not editing the spec to allow TEXTURE_BUFFER_ARB in > * these cases means that target is not legal, and an INVALID_ENUM > * error should be generated." > * > * From the OpenGL 3.1 spec: > * "target may also be TEXTURE_BUFFER, indicating the texture buffer." > */ > - return (ctx->API == API_OPENGL_CORE && ctx->Version >= 31) || > - _mesa_has_OES_texture_buffer(ctx); > + return (_mesa_is_desktop_gl(ctx) && ctx->Version >= 31) || > + _mesa_has_OES_texture_buffer(ctx); > case GL_TEXTURE_CUBE_MAP_ARRAY: > return _mesa_has_texture_cube_map_array(ctx); > } > > if (!_mesa_is_desktop_gl(ctx)) > return GL_FALSE; > > /* Rest of the desktop GL targets. */ > switch (target) { > case GL_TEXTURE_1D: > diff --git a/src/mesa/state_tracker/st_context.c > b/src/mesa/state_tracker/st_context.c > index 5d8dd8b..a96e454 100644 > --- a/src/mesa/state_tracker/st_context.c > +++ b/src/mesa/state_tracker/st_context.c > @@ -401,21 +401,21 @@ st_create_context_priv( struct gl_context *ctx, struct > pipe_context *pipe, > st->has_time_elapsed = > screen->get_param(screen, PIPE_CAP_QUERY_TIME_ELAPSED); > st->has_half_float_packing = > screen->get_param(screen, PIPE_CAP_TGSI_PACK_HALF_FLOAT); > st->has_multi_draw_indirect = > screen->get_param(screen, PIPE_CAP_MULTI_DRAW_INDIRECT); > > /* GL limits and extensions */ > st_init_limits(pipe->screen, &ctx->Const, &ctx->Extensions); > st_init_extensions(pipe->screen, &ctx->Const, > - &ctx->Extensions, &st->options); > + &ctx->Extensions, &st->options, ctx->API); > > if (st_have_perfmon(st)) { > ctx->Extensions.AMD_performance_monitor = GL_TRUE; > } > > /* Enable shader-based fallbacks for ARB_color_buffer_float if needed. */ > if (screen->get_param(screen, PIPE_CAP_VERTEX_COLOR_UNCLAMPED)) { > if (!screen->get_param(screen, PIPE_CAP_VERTEX_COLOR_CLAMPED)) { > st->clamp_vert_color_in_shader = GL_TRUE; > } > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index 3dec5a8..bf0ec2d 100644 > --- a/src/mesa/state_tracker/st_extensions.c > +++ b/src/mesa/state_tracker/st_extensions.c > @@ -565,21 +565,22 @@ get_max_samples_for_formats(struct pipe_screen *screen, > /** > * Use pipe_screen::get_param() to query PIPE_CAP_ values to determine > * which GL extensions are supported. > * Quite a few extensions are always supported because they are standard > * features or can be built on top of other gallium features. > * Some fine tuning may still be needed. > */ > void st_init_extensions(struct pipe_screen *screen, > struct gl_constants *consts, > struct gl_extensions *extensions, > - struct st_config_options *options) > + struct st_config_options *options, > + gl_api api) > { > unsigned i; > GLboolean *extension_table = (GLboolean *) extensions; > > static const struct st_extension_cap_mapping cap_mapping[] = { > { o(ARB_base_instance), PIPE_CAP_START_INSTANCE > }, > { o(ARB_bindless_texture), PIPE_CAP_BINDLESS_TEXTURE > }, > { o(ARB_buffer_storage), > PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT }, > { o(ARB_clear_texture), PIPE_CAP_CLEAR_TEXTURE > }, > { o(ARB_clip_control), PIPE_CAP_CLIP_HALFZ > }, > @@ -1082,20 +1083,25 @@ void st_init_extensions(struct pipe_screen *screen, > > if (options->disable_glsl_line_continuations) > consts->DisableGLSLLineContinuations = 1; > > if (options->allow_glsl_extension_directive_midshader) > consts->AllowGLSLExtensionDirectiveMidShader = GL_TRUE; > > consts->MinMapBufferAlignment = > screen->get_param(screen, PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT); > > + /* The OpenGL Compatibility profile requires arbitrary buffer swizzling. > */ > + if (api == API_OPENGL_COMPAT && > + screen->get_param(screen, PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY)) > + extensions->ARB_texture_buffer_object = GL_FALSE; > + > if (extensions->ARB_texture_buffer_object) { > consts->MaxTextureBufferSize = > _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE), > (1u << 31) - 1); > consts->TextureBufferOffsetAlignment = > screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT); > > if (consts->TextureBufferOffsetAlignment) > extensions->ARB_texture_buffer_range = GL_TRUE; > > diff --git a/src/mesa/state_tracker/st_extensions.h > b/src/mesa/state_tracker/st_extensions.h > index 951185c..7bf1aa8 100644 > --- a/src/mesa/state_tracker/st_extensions.h > +++ b/src/mesa/state_tracker/st_extensions.h > @@ -33,14 +33,15 @@ > struct st_context; > struct pipe_screen; > > extern void st_init_limits(struct pipe_screen *screen, > struct gl_constants *c, > struct gl_extensions *extensions); > > extern void st_init_extensions(struct pipe_screen *screen, > struct gl_constants *consts, > struct gl_extensions *extensions, > - struct st_config_options *options); > + struct st_config_options *options, > + gl_api api); > > > #endif /* ST_EXTENSIONS_H */ > diff --git a/src/mesa/state_tracker/st_manager.c > b/src/mesa/state_tracker/st_manager.c > index eebde62..dab987c 100644 > --- a/src/mesa/state_tracker/st_manager.c > +++ b/src/mesa/state_tracker/st_manager.c > @@ -1161,21 +1161,21 @@ get_version(struct pipe_screen *screen, > GLuint version; > > if (_mesa_override_gl_version_contextless(&consts, &api, &version)) { > return version; > } > > _mesa_init_constants(&consts, api); > _mesa_init_extensions(&extensions); > > st_init_limits(screen, &consts, &extensions); > - st_init_extensions(screen, &consts, &extensions, options); > + st_init_extensions(screen, &consts, &extensions, options, api); > > return _mesa_get_version(&extensions, &consts, api); > } > > static void > st_api_query_versions(struct st_api *stapi, struct st_manager *sm, > struct st_config_options *options, > int *gl_core_version, > int *gl_compat_version, > int *gl_es1_version, > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev