Compare commits
	
		
			7 Commits
		
	
	
		
			cros-mesa-
			...
			core-conte
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 85e97b18e0 | ||
|  | f2c8a8f550 | ||
|  | 631566bd77 | ||
|  | 7027b53956 | ||
|  | b0396f5d7b | ||
|  | cbc6974330 | ||
|  | f7a395f970 | 
| @@ -90,19 +90,17 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, | |||||||
|     */ |     */ | ||||||
|    this->Const.GLSL_100ES = (ctx->API == API_OPENGLES2) |    this->Const.GLSL_100ES = (ctx->API == API_OPENGLES2) | ||||||
|       || ctx->Extensions.ARB_ES2_compatibility; |       || ctx->Extensions.ARB_ES2_compatibility; | ||||||
|    this->Const.GLSL_110 = (ctx->API == API_OPENGL); |    bool is_desktop_gl = IS_CTX_DESKTOP_GL(ctx); | ||||||
|    this->Const.GLSL_120 = (ctx->API == API_OPENGL) |    this->Const.GLSL_110 = is_desktop_gl; | ||||||
|       && (ctx->Const.GLSLVersion >= 120); |    this->Const.GLSL_120 = is_desktop_gl && (ctx->Const.GLSLVersion >= 120); | ||||||
|    this->Const.GLSL_130 = (ctx->API == API_OPENGL) |    this->Const.GLSL_130 = is_desktop_gl && (ctx->Const.GLSLVersion >= 130); | ||||||
|       && (ctx->Const.GLSLVersion >= 130); |    this->Const.GLSL_140 = is_desktop_gl && (ctx->Const.GLSLVersion >= 140); | ||||||
|    this->Const.GLSL_140 = (ctx->API == API_OPENGL) |  | ||||||
|       && (ctx->Const.GLSLVersion >= 140); |  | ||||||
|  |  | ||||||
|    const unsigned lowest_version = |    const unsigned lowest_version = | ||||||
|       (ctx->API == API_OPENGLES2) || ctx->Extensions.ARB_ES2_compatibility |       (ctx->API == API_OPENGLES2) || ctx->Extensions.ARB_ES2_compatibility | ||||||
|       ? 100 : 110; |       ? 100 : 110; | ||||||
|    const unsigned highest_version = |    const unsigned highest_version = | ||||||
|       (ctx->API == API_OPENGL) ? ctx->Const.GLSLVersion : 100; |       is_desktop_gl ? ctx->Const.GLSLVersion : 100; | ||||||
|    char *supported = ralloc_strdup(this, ""); |    char *supported = ralloc_strdup(this, ""); | ||||||
|  |  | ||||||
|    for (unsigned ver = lowest_version; ver <= highest_version; ver += 10) { |    for (unsigned ver = lowest_version; ver <= highest_version; ver += 10) { | ||||||
|   | |||||||
| @@ -1848,7 +1848,7 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear) | |||||||
|    clear->ColorLocation = _mesa_GetUniformLocationARB(clear->ShaderProg, |    clear->ColorLocation = _mesa_GetUniformLocationARB(clear->ShaderProg, | ||||||
| 						      "color"); | 						      "color"); | ||||||
|  |  | ||||||
|    if (ctx->API == API_OPENGL && ctx->Const.GLSLVersion >= 130) { |    if (IS_CTX_DESKTOP_GL(ctx) && ctx->Const.GLSLVersion >= 130) { | ||||||
|       vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_int_source); |       vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_int_source); | ||||||
|       fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_int_source); |       fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_int_source); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -44,7 +44,7 @@ intelInitExtensions(struct gl_context *ctx) | |||||||
|  |  | ||||||
|    ctx->Extensions.ARB_draw_elements_base_vertex = true; |    ctx->Extensions.ARB_draw_elements_base_vertex = true; | ||||||
|    ctx->Extensions.ARB_explicit_attrib_location = true; |    ctx->Extensions.ARB_explicit_attrib_location = true; | ||||||
|    if (ctx->API == API_OPENGL) |    if (IS_CTX_DESKTOP_GL(ctx)) | ||||||
|       ctx->Extensions.ARB_framebuffer_object = true; |       ctx->Extensions.ARB_framebuffer_object = true; | ||||||
|    ctx->Extensions.ARB_half_float_pixel = true; |    ctx->Extensions.ARB_half_float_pixel = true; | ||||||
|    ctx->Extensions.ARB_map_buffer_range = true; |    ctx->Extensions.ARB_map_buffer_range = true; | ||||||
|   | |||||||
| @@ -120,7 +120,7 @@ | |||||||
|  * \param exec dispatch table. |  * \param exec dispatch table. | ||||||
|  */ |  */ | ||||||
| struct _glapi_table * | struct _glapi_table * | ||||||
| _mesa_create_exec_table(void) | _mesa_create_exec_table(struct gl_context *ctx) | ||||||
| { | { | ||||||
|    struct _glapi_table *exec; |    struct _glapi_table *exec; | ||||||
|  |  | ||||||
| @@ -133,7 +133,10 @@ _mesa_create_exec_table(void) | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    /* load the dispatch slots we understand */ |    /* load the dispatch slots we understand */ | ||||||
|    SET_AlphaFunc(exec, _mesa_AlphaFunc); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_AlphaFunc(exec, _mesa_AlphaFunc); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    SET_BlendFunc(exec, _mesa_BlendFunc); |    SET_BlendFunc(exec, _mesa_BlendFunc); | ||||||
|    SET_Clear(exec, _mesa_Clear); |    SET_Clear(exec, _mesa_Clear); | ||||||
|    SET_ClearColor(exec, _mesa_ClearColor); |    SET_ClearColor(exec, _mesa_ClearColor); | ||||||
| @@ -149,42 +152,62 @@ _mesa_create_exec_table(void) | |||||||
|    SET_Finish(exec, _mesa_Finish); |    SET_Finish(exec, _mesa_Finish); | ||||||
|    SET_Flush(exec, _mesa_Flush); |    SET_Flush(exec, _mesa_Flush); | ||||||
|    SET_FrontFace(exec, _mesa_FrontFace); |    SET_FrontFace(exec, _mesa_FrontFace); | ||||||
|    SET_Frustum(exec, _mesa_Frustum); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_Frustum(exec, _mesa_Frustum); | ||||||
|  |    } | ||||||
|    SET_GetError(exec, _mesa_GetError); |    SET_GetError(exec, _mesa_GetError); | ||||||
|    SET_GetFloatv(exec, _mesa_GetFloatv); |    SET_GetFloatv(exec, _mesa_GetFloatv); | ||||||
|    SET_GetString(exec, _mesa_GetString); |    SET_GetString(exec, _mesa_GetString); | ||||||
|    SET_LineStipple(exec, _mesa_LineStipple); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_LineStipple(exec, _mesa_LineStipple); | ||||||
|  |    } | ||||||
|    SET_LineWidth(exec, _mesa_LineWidth); |    SET_LineWidth(exec, _mesa_LineWidth); | ||||||
|    SET_LoadIdentity(exec, _mesa_LoadIdentity); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_LoadMatrixf(exec, _mesa_LoadMatrixf); |       SET_LoadIdentity(exec, _mesa_LoadIdentity); | ||||||
|  |       SET_LoadMatrixf(exec, _mesa_LoadMatrixf); | ||||||
|  |    } | ||||||
|    SET_LogicOp(exec, _mesa_LogicOp); |    SET_LogicOp(exec, _mesa_LogicOp); | ||||||
|    SET_MatrixMode(exec, _mesa_MatrixMode); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_MultMatrixf(exec, _mesa_MultMatrixf); |       SET_MatrixMode(exec, _mesa_MatrixMode); | ||||||
|    SET_Ortho(exec, _mesa_Ortho); |       SET_MultMatrixf(exec, _mesa_MultMatrixf); | ||||||
|  |       SET_Ortho(exec, _mesa_Ortho); | ||||||
|  |    } | ||||||
|    SET_PixelStorei(exec, _mesa_PixelStorei); |    SET_PixelStorei(exec, _mesa_PixelStorei); | ||||||
|    SET_PopMatrix(exec, _mesa_PopMatrix); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_PushMatrix(exec, _mesa_PushMatrix); |       SET_PopMatrix(exec, _mesa_PopMatrix); | ||||||
|    SET_Rotatef(exec, _mesa_Rotatef); |       SET_PushMatrix(exec, _mesa_PushMatrix); | ||||||
|    SET_Scalef(exec, _mesa_Scalef); |       SET_Rotatef(exec, _mesa_Rotatef); | ||||||
|  |       SET_Scalef(exec, _mesa_Scalef); | ||||||
|  |    } | ||||||
|    SET_Scissor(exec, _mesa_Scissor); |    SET_Scissor(exec, _mesa_Scissor); | ||||||
|    SET_ShadeModel(exec, _mesa_ShadeModel); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_ShadeModel(exec, _mesa_ShadeModel); | ||||||
|  |    } | ||||||
|    SET_StencilFunc(exec, _mesa_StencilFunc); |    SET_StencilFunc(exec, _mesa_StencilFunc); | ||||||
|    SET_StencilMask(exec, _mesa_StencilMask); |    SET_StencilMask(exec, _mesa_StencilMask); | ||||||
|    SET_StencilOp(exec, _mesa_StencilOp); |    SET_StencilOp(exec, _mesa_StencilOp); | ||||||
|    SET_TexEnvfv(exec, _mesa_TexEnvfv); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_TexEnvi(exec, _mesa_TexEnvi); |       SET_TexEnvfv(exec, _mesa_TexEnvfv); | ||||||
|  |       SET_TexEnvi(exec, _mesa_TexEnvi); | ||||||
|  |    } | ||||||
|    SET_TexImage2D(exec, _mesa_TexImage2D); |    SET_TexImage2D(exec, _mesa_TexImage2D); | ||||||
|    SET_TexParameteri(exec, _mesa_TexParameteri); |    SET_TexParameteri(exec, _mesa_TexParameteri); | ||||||
|    SET_Translatef(exec, _mesa_Translatef); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_Translatef(exec, _mesa_Translatef); | ||||||
|  |    } | ||||||
|    SET_Viewport(exec, _mesa_Viewport); |    SET_Viewport(exec, _mesa_Viewport); | ||||||
|  |  | ||||||
|    _mesa_init_accum_dispatch(exec); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    _mesa_init_dlist_dispatch(exec); |       _mesa_init_accum_dispatch(exec); | ||||||
|  |       _mesa_init_dlist_dispatch(exec); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    SET_ClearDepth(exec, _mesa_ClearDepth); |    SET_ClearDepth(exec, _mesa_ClearDepth); | ||||||
|    SET_ClearIndex(exec, _mesa_ClearIndex); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_ClipPlane(exec, _mesa_ClipPlane); |       SET_ClearIndex(exec, _mesa_ClearIndex); | ||||||
|    SET_ColorMaterial(exec, _mesa_ColorMaterial); |       SET_ClipPlane(exec, _mesa_ClipPlane); | ||||||
|  |       SET_ColorMaterial(exec, _mesa_ColorMaterial); | ||||||
|  |    } | ||||||
|    SET_DepthFunc(exec, _mesa_DepthFunc); |    SET_DepthFunc(exec, _mesa_DepthFunc); | ||||||
|    SET_DepthMask(exec, _mesa_DepthMask); |    SET_DepthMask(exec, _mesa_DepthMask); | ||||||
|    SET_DepthRange(exec, _mesa_DepthRange); |    SET_DepthRange(exec, _mesa_DepthRange); | ||||||
| @@ -192,43 +215,53 @@ _mesa_create_exec_table(void) | |||||||
|    _mesa_init_drawpix_dispatch(exec); |    _mesa_init_drawpix_dispatch(exec); | ||||||
|    _mesa_init_feedback_dispatch(exec); |    _mesa_init_feedback_dispatch(exec); | ||||||
|  |  | ||||||
|    SET_FogCoordPointerEXT(exec, _mesa_FogCoordPointerEXT); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_Fogf(exec, _mesa_Fogf); |       SET_FogCoordPointerEXT(exec, _mesa_FogCoordPointerEXT); | ||||||
|    SET_Fogfv(exec, _mesa_Fogfv); |       SET_Fogf(exec, _mesa_Fogf); | ||||||
|    SET_Fogi(exec, _mesa_Fogi); |       SET_Fogfv(exec, _mesa_Fogfv); | ||||||
|    SET_Fogiv(exec, _mesa_Fogiv); |       SET_Fogi(exec, _mesa_Fogi); | ||||||
|    SET_GetClipPlane(exec, _mesa_GetClipPlane); |       SET_Fogiv(exec, _mesa_Fogiv); | ||||||
|  |       SET_GetClipPlane(exec, _mesa_GetClipPlane); | ||||||
|  |    } | ||||||
|    SET_GetBooleanv(exec, _mesa_GetBooleanv); |    SET_GetBooleanv(exec, _mesa_GetBooleanv); | ||||||
|    SET_GetDoublev(exec, _mesa_GetDoublev); |    SET_GetDoublev(exec, _mesa_GetDoublev); | ||||||
|    SET_GetIntegerv(exec, _mesa_GetIntegerv); |    SET_GetIntegerv(exec, _mesa_GetIntegerv); | ||||||
|    SET_GetLightfv(exec, _mesa_GetLightfv); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_GetLightiv(exec, _mesa_GetLightiv); |       SET_GetLightfv(exec, _mesa_GetLightfv); | ||||||
|    SET_GetMaterialfv(exec, _mesa_GetMaterialfv); |       SET_GetLightiv(exec, _mesa_GetLightiv); | ||||||
|    SET_GetMaterialiv(exec, _mesa_GetMaterialiv); |       SET_GetMaterialfv(exec, _mesa_GetMaterialfv); | ||||||
|    SET_GetPolygonStipple(exec, _mesa_GetPolygonStipple); |       SET_GetMaterialiv(exec, _mesa_GetMaterialiv); | ||||||
|    SET_GetTexEnvfv(exec, _mesa_GetTexEnvfv); |       SET_GetPolygonStipple(exec, _mesa_GetPolygonStipple); | ||||||
|    SET_GetTexEnviv(exec, _mesa_GetTexEnviv); |       SET_GetTexEnvfv(exec, _mesa_GetTexEnvfv); | ||||||
|  |       SET_GetTexEnviv(exec, _mesa_GetTexEnviv); | ||||||
|  |    } | ||||||
|    SET_GetTexLevelParameterfv(exec, _mesa_GetTexLevelParameterfv); |    SET_GetTexLevelParameterfv(exec, _mesa_GetTexLevelParameterfv); | ||||||
|    SET_GetTexLevelParameteriv(exec, _mesa_GetTexLevelParameteriv); |    SET_GetTexLevelParameteriv(exec, _mesa_GetTexLevelParameteriv); | ||||||
|    SET_GetTexParameterfv(exec, _mesa_GetTexParameterfv); |    SET_GetTexParameterfv(exec, _mesa_GetTexParameterfv); | ||||||
|    SET_GetTexParameteriv(exec, _mesa_GetTexParameteriv); |    SET_GetTexParameteriv(exec, _mesa_GetTexParameteriv); | ||||||
|    SET_GetTexImage(exec, _mesa_GetTexImage); |    SET_GetTexImage(exec, _mesa_GetTexImage); | ||||||
|    SET_Hint(exec, _mesa_Hint); |    SET_Hint(exec, _mesa_Hint); | ||||||
|    SET_IndexMask(exec, _mesa_IndexMask); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_IndexMask(exec, _mesa_IndexMask); | ||||||
|  |    } | ||||||
|    SET_IsEnabled(exec, _mesa_IsEnabled); |    SET_IsEnabled(exec, _mesa_IsEnabled); | ||||||
|    SET_LightModelf(exec, _mesa_LightModelf); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_LightModelfv(exec, _mesa_LightModelfv); |       SET_LightModelf(exec, _mesa_LightModelf); | ||||||
|    SET_LightModeli(exec, _mesa_LightModeli); |       SET_LightModelfv(exec, _mesa_LightModelfv); | ||||||
|    SET_LightModeliv(exec, _mesa_LightModeliv); |       SET_LightModeli(exec, _mesa_LightModeli); | ||||||
|    SET_Lightf(exec, _mesa_Lightf); |       SET_LightModeliv(exec, _mesa_LightModeliv); | ||||||
|    SET_Lightfv(exec, _mesa_Lightfv); |       SET_Lightf(exec, _mesa_Lightf); | ||||||
|    SET_Lighti(exec, _mesa_Lighti); |       SET_Lightfv(exec, _mesa_Lightfv); | ||||||
|    SET_Lightiv(exec, _mesa_Lightiv); |       SET_Lighti(exec, _mesa_Lighti); | ||||||
|    SET_LoadMatrixd(exec, _mesa_LoadMatrixd); |       SET_Lightiv(exec, _mesa_Lightiv); | ||||||
|  |       SET_LoadMatrixd(exec, _mesa_LoadMatrixd); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    _mesa_init_eval_dispatch(exec); |    _mesa_init_eval_dispatch(exec); | ||||||
|  |  | ||||||
|    SET_MultMatrixd(exec, _mesa_MultMatrixd); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_MultMatrixd(exec, _mesa_MultMatrixd); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    _mesa_init_pixel_dispatch(exec); |    _mesa_init_pixel_dispatch(exec); | ||||||
|  |  | ||||||
| @@ -236,17 +269,21 @@ _mesa_create_exec_table(void) | |||||||
|    SET_PointSize(exec, _mesa_PointSize); |    SET_PointSize(exec, _mesa_PointSize); | ||||||
|    SET_PolygonMode(exec, _mesa_PolygonMode); |    SET_PolygonMode(exec, _mesa_PolygonMode); | ||||||
|    SET_PolygonOffset(exec, _mesa_PolygonOffset); |    SET_PolygonOffset(exec, _mesa_PolygonOffset); | ||||||
|    SET_PolygonStipple(exec, _mesa_PolygonStipple); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_PolygonStipple(exec, _mesa_PolygonStipple); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    _mesa_init_attrib_dispatch(exec); |    _mesa_init_attrib_dispatch(exec); | ||||||
|    _mesa_init_rastpos_dispatch(exec); |    _mesa_init_rastpos_dispatch(exec); | ||||||
|  |  | ||||||
|    SET_ReadPixels(exec, _mesa_ReadPixels); |    SET_ReadPixels(exec, _mesa_ReadPixels); | ||||||
|    SET_Rotated(exec, _mesa_Rotated); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_Scaled(exec, _mesa_Scaled); |       SET_Rotated(exec, _mesa_Rotated); | ||||||
|    SET_SecondaryColorPointerEXT(exec, _mesa_SecondaryColorPointerEXT); |       SET_Scaled(exec, _mesa_Scaled); | ||||||
|    SET_TexEnvf(exec, _mesa_TexEnvf); |       SET_SecondaryColorPointerEXT(exec, _mesa_SecondaryColorPointerEXT); | ||||||
|    SET_TexEnviv(exec, _mesa_TexEnviv); |       SET_TexEnvf(exec, _mesa_TexEnvf); | ||||||
|  |       SET_TexEnviv(exec, _mesa_TexEnviv); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    _mesa_init_texgen_dispatch(exec); |    _mesa_init_texgen_dispatch(exec); | ||||||
|  |  | ||||||
| @@ -254,32 +291,42 @@ _mesa_create_exec_table(void) | |||||||
|    SET_TexParameterf(exec, _mesa_TexParameterf); |    SET_TexParameterf(exec, _mesa_TexParameterf); | ||||||
|    SET_TexParameterfv(exec, _mesa_TexParameterfv); |    SET_TexParameterfv(exec, _mesa_TexParameterfv); | ||||||
|    SET_TexParameteriv(exec, _mesa_TexParameteriv); |    SET_TexParameteriv(exec, _mesa_TexParameteriv); | ||||||
|    SET_Translated(exec, _mesa_Translated); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_Translated(exec, _mesa_Translated); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    /* 1.1 */ |    /* 1.1 */ | ||||||
|    SET_BindTexture(exec, _mesa_BindTexture); |    SET_BindTexture(exec, _mesa_BindTexture); | ||||||
|    SET_DeleteTextures(exec, _mesa_DeleteTextures); |    SET_DeleteTextures(exec, _mesa_DeleteTextures); | ||||||
|    SET_GenTextures(exec, _mesa_GenTextures); |    SET_GenTextures(exec, _mesa_GenTextures); | ||||||
| #if _HAVE_FULL_GL | #if _HAVE_FULL_GL | ||||||
|    SET_AreTexturesResident(exec, _mesa_AreTexturesResident); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_ColorPointer(exec, _mesa_ColorPointer); |       SET_AreTexturesResident(exec, _mesa_AreTexturesResident); | ||||||
|  |       SET_ColorPointer(exec, _mesa_ColorPointer); | ||||||
|  |    } | ||||||
|    SET_CopyTexImage1D(exec, _mesa_CopyTexImage1D); |    SET_CopyTexImage1D(exec, _mesa_CopyTexImage1D); | ||||||
|    SET_CopyTexImage2D(exec, _mesa_CopyTexImage2D); |    SET_CopyTexImage2D(exec, _mesa_CopyTexImage2D); | ||||||
|    SET_CopyTexSubImage1D(exec, _mesa_CopyTexSubImage1D); |    SET_CopyTexSubImage1D(exec, _mesa_CopyTexSubImage1D); | ||||||
|    SET_CopyTexSubImage2D(exec, _mesa_CopyTexSubImage2D); |    SET_CopyTexSubImage2D(exec, _mesa_CopyTexSubImage2D); | ||||||
|    SET_DisableClientState(exec, _mesa_DisableClientState); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_EdgeFlagPointer(exec, _mesa_EdgeFlagPointer); |       SET_DisableClientState(exec, _mesa_DisableClientState); | ||||||
|    SET_EnableClientState(exec, _mesa_EnableClientState); |       SET_EdgeFlagPointer(exec, _mesa_EdgeFlagPointer); | ||||||
|    SET_GetPointerv(exec, _mesa_GetPointerv); |       SET_EnableClientState(exec, _mesa_EnableClientState); | ||||||
|    SET_IndexPointer(exec, _mesa_IndexPointer); |       SET_GetPointerv(exec, _mesa_GetPointerv); | ||||||
|    SET_InterleavedArrays(exec, _mesa_InterleavedArrays); |       SET_IndexPointer(exec, _mesa_IndexPointer); | ||||||
|  |       SET_InterleavedArrays(exec, _mesa_InterleavedArrays); | ||||||
|  |    } | ||||||
|    SET_IsTexture(exec, _mesa_IsTexture); |    SET_IsTexture(exec, _mesa_IsTexture); | ||||||
|    SET_NormalPointer(exec, _mesa_NormalPointer); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_PrioritizeTextures(exec, _mesa_PrioritizeTextures); |       SET_NormalPointer(exec, _mesa_NormalPointer); | ||||||
|    SET_TexCoordPointer(exec, _mesa_TexCoordPointer); |       SET_PrioritizeTextures(exec, _mesa_PrioritizeTextures); | ||||||
|  |       SET_TexCoordPointer(exec, _mesa_TexCoordPointer); | ||||||
|  |    } | ||||||
|    SET_TexSubImage1D(exec, _mesa_TexSubImage1D); |    SET_TexSubImage1D(exec, _mesa_TexSubImage1D); | ||||||
|    SET_TexSubImage2D(exec, _mesa_TexSubImage2D); |    SET_TexSubImage2D(exec, _mesa_TexSubImage2D); | ||||||
|    SET_VertexPointer(exec, _mesa_VertexPointer); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|  |       SET_VertexPointer(exec, _mesa_VertexPointer); | ||||||
|  |    } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    /* 1.2 */ |    /* 1.2 */ | ||||||
| @@ -327,31 +374,37 @@ _mesa_create_exec_table(void) | |||||||
|  |  | ||||||
|    /* 11. GL_EXT_histogram */ |    /* 11. GL_EXT_histogram */ | ||||||
| #if 0 | #if 0 | ||||||
|    SET_GetHistogramEXT(exec, _mesa_GetHistogram); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_GetHistogramParameterfvEXT(exec, _mesa_GetHistogramParameterfv); |       SET_GetHistogramEXT(exec, _mesa_GetHistogram); | ||||||
|    SET_GetHistogramParameterivEXT(exec, _mesa_GetHistogramParameteriv); |       SET_GetHistogramParameterfvEXT(exec, _mesa_GetHistogramParameterfv); | ||||||
|    SET_GetMinmaxEXT(exec, _mesa_GetMinmax); |       SET_GetHistogramParameterivEXT(exec, _mesa_GetHistogramParameteriv); | ||||||
|    SET_GetMinmaxParameterfvEXT(exec, _mesa_GetMinmaxParameterfv); |       SET_GetMinmaxEXT(exec, _mesa_GetMinmax); | ||||||
|    SET_GetMinmaxParameterivEXT(exec, _mesa_GetMinmaxParameteriv); |       SET_GetMinmaxParameterfvEXT(exec, _mesa_GetMinmaxParameterfv); | ||||||
|  |       SET_GetMinmaxParameterivEXT(exec, _mesa_GetMinmaxParameteriv); | ||||||
|  |    } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    /* 14. SGI_color_table */ |    /* 14. SGI_color_table */ | ||||||
| #if 0 | #if 0 | ||||||
|    SET_ColorTableSGI(exec, _mesa_ColorTable); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_ColorSubTableSGI(exec, _mesa_ColorSubTable); |       SET_ColorTableSGI(exec, _mesa_ColorTable); | ||||||
|    SET_GetColorTableSGI(exec, _mesa_GetColorTable); |       SET_ColorSubTableSGI(exec, _mesa_ColorSubTable); | ||||||
|    SET_GetColorTableParameterfvSGI(exec, _mesa_GetColorTableParameterfv); |       SET_GetColorTableSGI(exec, _mesa_GetColorTable); | ||||||
|    SET_GetColorTableParameterivSGI(exec, _mesa_GetColorTableParameteriv); |       SET_GetColorTableParameterfvSGI(exec, _mesa_GetColorTableParameterfv); | ||||||
|  |       SET_GetColorTableParameterivSGI(exec, _mesa_GetColorTableParameteriv); | ||||||
|  |    } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    /* 30. GL_EXT_vertex_array */ |    /* 30. GL_EXT_vertex_array */ | ||||||
| #if _HAVE_FULL_GL | #if _HAVE_FULL_GL | ||||||
|    SET_ColorPointerEXT(exec, _mesa_ColorPointerEXT); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_EdgeFlagPointerEXT(exec, _mesa_EdgeFlagPointerEXT); |       SET_ColorPointerEXT(exec, _mesa_ColorPointerEXT); | ||||||
|    SET_IndexPointerEXT(exec, _mesa_IndexPointerEXT); |       SET_EdgeFlagPointerEXT(exec, _mesa_EdgeFlagPointerEXT); | ||||||
|    SET_NormalPointerEXT(exec, _mesa_NormalPointerEXT); |       SET_IndexPointerEXT(exec, _mesa_IndexPointerEXT); | ||||||
|    SET_TexCoordPointerEXT(exec, _mesa_TexCoordPointerEXT); |       SET_NormalPointerEXT(exec, _mesa_NormalPointerEXT); | ||||||
|    SET_VertexPointerEXT(exec, _mesa_VertexPointerEXT); |       SET_TexCoordPointerEXT(exec, _mesa_TexCoordPointerEXT); | ||||||
|  |       SET_VertexPointerEXT(exec, _mesa_VertexPointerEXT); | ||||||
|  |    } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    /* 37. GL_EXT_blend_minmax */ |    /* 37. GL_EXT_blend_minmax */ | ||||||
| @@ -483,10 +536,12 @@ _mesa_create_exec_table(void) | |||||||
|  |  | ||||||
|    /* ARB 3. GL_ARB_transpose_matrix */ |    /* ARB 3. GL_ARB_transpose_matrix */ | ||||||
| #if _HAVE_FULL_GL | #if _HAVE_FULL_GL | ||||||
|    SET_LoadTransposeMatrixdARB(exec, _mesa_LoadTransposeMatrixdARB); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_LoadTransposeMatrixfARB(exec, _mesa_LoadTransposeMatrixfARB); |       SET_LoadTransposeMatrixdARB(exec, _mesa_LoadTransposeMatrixdARB); | ||||||
|    SET_MultTransposeMatrixdARB(exec, _mesa_MultTransposeMatrixdARB); |       SET_LoadTransposeMatrixfARB(exec, _mesa_LoadTransposeMatrixfARB); | ||||||
|    SET_MultTransposeMatrixfARB(exec, _mesa_MultTransposeMatrixfARB); |       SET_MultTransposeMatrixdARB(exec, _mesa_MultTransposeMatrixdARB); | ||||||
|  |       SET_MultTransposeMatrixfARB(exec, _mesa_MultTransposeMatrixfARB); | ||||||
|  |    } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    /* ARB 5. GL_ARB_multisample */ |    /* ARB 5. GL_ARB_multisample */ | ||||||
|   | |||||||
| @@ -28,12 +28,13 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| struct _glapi_table; | struct _glapi_table; | ||||||
|  | struct gl_context; | ||||||
|  |  | ||||||
| extern struct _glapi_table * | extern struct _glapi_table * | ||||||
| _mesa_alloc_dispatch_table(int size); | _mesa_alloc_dispatch_table(int size); | ||||||
|  |  | ||||||
| extern struct _glapi_table * | extern struct _glapi_table * | ||||||
| _mesa_create_exec_table(void); | _mesa_create_exec_table(struct gl_context *ctx); | ||||||
|  |  | ||||||
| extern struct _glapi_table * | extern struct _glapi_table * | ||||||
| _mesa_create_exec_table_es1(void); | _mesa_create_exec_table_es1(void); | ||||||
|   | |||||||
| @@ -128,6 +128,7 @@ check_valid_to_render(struct gl_context *ctx, const char *function) | |||||||
|  |  | ||||||
| #if FEATURE_GL | #if FEATURE_GL | ||||||
|    case API_OPENGL: |    case API_OPENGL: | ||||||
|  |    case API_OPENGL_CORE: | ||||||
|       { |       { | ||||||
|          const struct gl_shader_program *vsProg = |          const struct gl_shader_program *vsProg = | ||||||
|             ctx->Shader.CurrentVertexProgram; |             ctx->Shader.CurrentVertexProgram; | ||||||
|   | |||||||
| @@ -431,7 +431,7 @@ one_time_init( struct gl_context *ctx ) | |||||||
|        * when an app is linked to libGLES*, there are not enough dynamic |        * when an app is linked to libGLES*, there are not enough dynamic | ||||||
|        * entries. |        * entries. | ||||||
|        */ |        */ | ||||||
|       if (ctx->API == API_OPENGL) |       if (IS_CTX_DESKTOP_GL(ctx)) | ||||||
|          _mesa_init_remap_table(); |          _mesa_init_remap_table(); | ||||||
|    } |    } | ||||||
|  |  | ||||||
| @@ -626,7 +626,7 @@ _mesa_init_constants(struct gl_context *ctx) | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    /* Shading language version */ |    /* Shading language version */ | ||||||
|    if (ctx->API == API_OPENGL) { |    if (IS_CTX_DESKTOP_GL(ctx)) { | ||||||
|       ctx->Const.GLSLVersion = 120; |       ctx->Const.GLSLVersion = 120; | ||||||
|       _mesa_override_glsl_version(ctx); |       _mesa_override_glsl_version(ctx); | ||||||
|    } |    } | ||||||
| @@ -962,7 +962,8 @@ _mesa_initialize_context(struct gl_context *ctx, | |||||||
|    switch (ctx->API) { |    switch (ctx->API) { | ||||||
| #if FEATURE_GL | #if FEATURE_GL | ||||||
|    case API_OPENGL: |    case API_OPENGL: | ||||||
|       ctx->Exec = _mesa_create_exec_table(); |    case API_OPENGL_CORE: | ||||||
|  |       ctx->Exec = _mesa_create_exec_table(ctx); | ||||||
|       break; |       break; | ||||||
| #endif | #endif | ||||||
| #if FEATURE_ES1 | #if FEATURE_ES1 | ||||||
| @@ -1007,6 +1008,7 @@ _mesa_initialize_context(struct gl_context *ctx, | |||||||
|  |  | ||||||
|    switch (ctx->API) { |    switch (ctx->API) { | ||||||
|    case API_OPENGL: |    case API_OPENGL: | ||||||
|  |    case API_OPENGL_CORE: | ||||||
| #if FEATURE_dlist | #if FEATURE_dlist | ||||||
|       ctx->Save = _mesa_create_save_table(); |       ctx->Save = _mesa_create_save_table(); | ||||||
|       if (!ctx->Save) { |       if (!ctx->Save) { | ||||||
|   | |||||||
| @@ -41,7 +41,9 @@ | |||||||
|  |  | ||||||
| enum { | enum { | ||||||
|    DISABLE = 0, |    DISABLE = 0, | ||||||
|    GL  = 1 << API_OPENGL, |    GLL = 1 << API_OPENGL, | ||||||
|  |    GLC = 1 << API_OPENGL_CORE, | ||||||
|  |    GL  = (1 << API_OPENGL) | (1 << API_OPENGL_CORE), | ||||||
|    ES1 = 1 << API_OPENGLES, |    ES1 = 1 << API_OPENGLES, | ||||||
|    ES2 = 1 << API_OPENGLES2, |    ES2 = 1 << API_OPENGLES2, | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -164,10 +164,10 @@ get_framebuffer_target(struct gl_context *ctx, GLenum target) | |||||||
| { | { | ||||||
|    switch (target) { |    switch (target) { | ||||||
|    case GL_DRAW_FRAMEBUFFER: |    case GL_DRAW_FRAMEBUFFER: | ||||||
|       return ctx->Extensions.EXT_framebuffer_blit && ctx->API == API_OPENGL |       return ctx->Extensions.EXT_framebuffer_blit && IS_CTX_DESKTOP_GL(ctx) | ||||||
| 	 ? ctx->DrawBuffer : NULL; | 	 ? ctx->DrawBuffer : NULL; | ||||||
|    case GL_READ_FRAMEBUFFER: |    case GL_READ_FRAMEBUFFER: | ||||||
|       return ctx->Extensions.EXT_framebuffer_blit && ctx->API == API_OPENGL |       return ctx->Extensions.EXT_framebuffer_blit && IS_CTX_DESKTOP_GL(ctx) | ||||||
| 	 ? ctx->ReadBuffer : NULL; | 	 ? ctx->ReadBuffer : NULL; | ||||||
|    case GL_FRAMEBUFFER_EXT: |    case GL_FRAMEBUFFER_EXT: | ||||||
|       return ctx->DrawBuffer; |       return ctx->DrawBuffer; | ||||||
| @@ -221,7 +221,7 @@ _mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, | |||||||
|       } |       } | ||||||
|       return &fb->Attachment[BUFFER_COLOR0 + i]; |       return &fb->Attachment[BUFFER_COLOR0 + i]; | ||||||
|    case GL_DEPTH_STENCIL_ATTACHMENT: |    case GL_DEPTH_STENCIL_ATTACHMENT: | ||||||
|       if (ctx->API != API_OPENGL) |       if (!IS_CTX_DESKTOP_GL(ctx)) | ||||||
| 	 return NULL; | 	 return NULL; | ||||||
|       /* fall-through */ |       /* fall-through */ | ||||||
|    case GL_DEPTH_ATTACHMENT_EXT: |    case GL_DEPTH_ATTACHMENT_EXT: | ||||||
| @@ -817,7 +817,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, | |||||||
|    } |    } | ||||||
|  |  | ||||||
| #if FEATURE_GL | #if FEATURE_GL | ||||||
|    if (ctx->API == API_OPENGL && !ctx->Extensions.ARB_ES2_compatibility) { |    if (IS_CTX_DESKTOP_GL(ctx) && !ctx->Extensions.ARB_ES2_compatibility) { | ||||||
|       /* Check that all DrawBuffers are present */ |       /* Check that all DrawBuffers are present */ | ||||||
|       for (j = 0; j < ctx->Const.MaxDrawBuffers; j++) { |       for (j = 0; j < ctx->Const.MaxDrawBuffers; j++) { | ||||||
| 	 if (fb->ColorDrawBuffer[j] != GL_NONE) { | 	 if (fb->ColorDrawBuffer[j] != GL_NONE) { | ||||||
| @@ -2289,7 +2289,7 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, | |||||||
|    ASSERT_OUTSIDE_BEGIN_END(ctx); |    ASSERT_OUTSIDE_BEGIN_END(ctx); | ||||||
|  |  | ||||||
|    /* The error differs in GL and GLES. */ |    /* The error differs in GL and GLES. */ | ||||||
|    err = ctx->API == API_OPENGL ? GL_INVALID_OPERATION : GL_INVALID_ENUM; |    err = IS_CTX_DESKTOP_GL(ctx) ? GL_INVALID_OPERATION : GL_INVALID_ENUM; | ||||||
|  |  | ||||||
|    buffer = get_framebuffer_target(ctx, target); |    buffer = get_framebuffer_target(ctx, target); | ||||||
|    if (!buffer) { |    if (!buffer) { | ||||||
| @@ -2309,7 +2309,7 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, | |||||||
|        * OES_framebuffer_object spec refers to the EXT_framebuffer_object |        * OES_framebuffer_object spec refers to the EXT_framebuffer_object | ||||||
|        * spec. |        * spec. | ||||||
|        */ |        */ | ||||||
|       if (ctx->API != API_OPENGL || !ctx->Extensions.ARB_framebuffer_object) { |       if (!IS_CTX_DESKTOP_GL(ctx) || !ctx->Extensions.ARB_framebuffer_object) { | ||||||
| 	 _mesa_error(ctx, GL_INVALID_OPERATION, | 	 _mesa_error(ctx, GL_INVALID_OPERATION, | ||||||
| 		     "glGetFramebufferAttachmentParameteriv(bound FBO = 0)"); | 		     "glGetFramebufferAttachmentParameteriv(bound FBO = 0)"); | ||||||
| 	 return; | 	 return; | ||||||
| @@ -2357,7 +2357,7 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, | |||||||
|       } |       } | ||||||
|       else { |       else { | ||||||
|          assert(att->Type == GL_NONE); |          assert(att->Type == GL_NONE); | ||||||
|          if (ctx->API == API_OPENGL) { |          if (IS_CTX_DESKTOP_GL(ctx)) { | ||||||
|             *params = 0; |             *params = 0; | ||||||
|          } else { |          } else { | ||||||
|             _mesa_error(ctx, GL_INVALID_ENUM, |             _mesa_error(ctx, GL_INVALID_ENUM, | ||||||
|   | |||||||
| @@ -391,6 +391,7 @@ extra_NV_read_buffer_api_gl[] = { | |||||||
| #define API_OPENGL_BIT (1 << API_OPENGL) | #define API_OPENGL_BIT (1 << API_OPENGL) | ||||||
| #define API_OPENGLES_BIT (1 << API_OPENGLES) | #define API_OPENGLES_BIT (1 << API_OPENGLES) | ||||||
| #define API_OPENGLES2_BIT (1 << API_OPENGLES2) | #define API_OPENGLES2_BIT (1 << API_OPENGLES2) | ||||||
|  | #define API_OPENGL_CORE_BIT (1 << API_OPENGL_CORE) | ||||||
|  |  | ||||||
| /* This is the big table describing all the enums we accept in | /* This is the big table describing all the enums we accept in | ||||||
|  * glGet*v().  The table is partitioned into six parts: enums |  * glGet*v().  The table is partitioned into six parts: enums | ||||||
| @@ -405,7 +406,9 @@ extra_NV_read_buffer_api_gl[] = { | |||||||
| static const struct value_desc values[] = { | static const struct value_desc values[] = { | ||||||
|    /* Enums shared between OpenGL, GLES1 and GLES2 */ |    /* Enums shared between OpenGL, GLES1 and GLES2 */ | ||||||
|    { 0, 0, TYPE_API_MASK, |    { 0, 0, TYPE_API_MASK, | ||||||
|      API_OPENGL_BIT | API_OPENGLES_BIT | API_OPENGLES2_BIT, NO_EXTRA}, |      API_OPENGL_BIT | API_OPENGLES_BIT |API_OPENGLES2_BIT | | ||||||
|  |        API_OPENGL_CORE_BIT, | ||||||
|  |      NO_EXTRA}, | ||||||
|    { GL_ALPHA_BITS, BUFFER_INT(Visual.alphaBits), extra_new_buffers }, |    { GL_ALPHA_BITS, BUFFER_INT(Visual.alphaBits), extra_new_buffers }, | ||||||
|    { GL_BLEND, CONTEXT_BIT0(Color.BlendEnabled), NO_EXTRA }, |    { GL_BLEND, CONTEXT_BIT0(Color.BlendEnabled), NO_EXTRA }, | ||||||
|    { GL_BLEND_SRC, CONTEXT_ENUM(Color.Blend[0].SrcRGB), NO_EXTRA }, |    { GL_BLEND_SRC, CONTEXT_ENUM(Color.Blend[0].SrcRGB), NO_EXTRA }, | ||||||
| @@ -534,7 +537,7 @@ static const struct value_desc values[] = { | |||||||
|  |  | ||||||
| #if FEATURE_GL || FEATURE_ES1 | #if FEATURE_GL || FEATURE_ES1 | ||||||
|    /* Enums in OpenGL and GLES1 */ |    /* Enums in OpenGL and GLES1 */ | ||||||
|    { 0, 0, TYPE_API_MASK, API_OPENGL_BIT | API_OPENGLES_BIT, NO_EXTRA }, |    { 0, 0, TYPE_API_MASK, API_OPENGL_BIT | API_OPENGLES_BIT | API_OPENGL_CORE_BIT, NO_EXTRA }, | ||||||
|    { GL_MAX_LIGHTS, CONTEXT_INT(Const.MaxLights), NO_EXTRA }, |    { GL_MAX_LIGHTS, CONTEXT_INT(Const.MaxLights), NO_EXTRA }, | ||||||
|    { GL_LIGHT0, CONTEXT_BOOL(Light.Light[0].Enabled), NO_EXTRA }, |    { GL_LIGHT0, CONTEXT_BOOL(Light.Light[0].Enabled), NO_EXTRA }, | ||||||
|    { GL_LIGHT1, CONTEXT_BOOL(Light.Light[1].Enabled), NO_EXTRA }, |    { GL_LIGHT1, CONTEXT_BOOL(Light.Light[1].Enabled), NO_EXTRA }, | ||||||
| @@ -796,7 +799,7 @@ static const struct value_desc values[] = { | |||||||
|  |  | ||||||
| #if FEATURE_GL | #if FEATURE_GL | ||||||
|    /* Remaining enums are only in OpenGL */ |    /* Remaining enums are only in OpenGL */ | ||||||
|    { 0, 0, TYPE_API_MASK, API_OPENGL_BIT, NO_EXTRA }, |    { 0, 0, TYPE_API_MASK, API_OPENGL_BIT | API_OPENGL_CORE_BIT, NO_EXTRA }, | ||||||
|    { GL_ACCUM_RED_BITS, BUFFER_INT(Visual.accumRedBits), NO_EXTRA }, |    { GL_ACCUM_RED_BITS, BUFFER_INT(Visual.accumRedBits), NO_EXTRA }, | ||||||
|    { GL_ACCUM_GREEN_BITS, BUFFER_INT(Visual.accumGreenBits), NO_EXTRA }, |    { GL_ACCUM_GREEN_BITS, BUFFER_INT(Visual.accumGreenBits), NO_EXTRA }, | ||||||
|    { GL_ACCUM_BLUE_BITS, BUFFER_INT(Visual.accumBlueBits), NO_EXTRA }, |    { GL_ACCUM_BLUE_BITS, BUFFER_INT(Visual.accumBlueBits), NO_EXTRA }, | ||||||
| @@ -1887,7 +1890,7 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d | |||||||
| 	 } | 	 } | ||||||
| 	 break; | 	 break; | ||||||
|       case EXTRA_API_GL: |       case EXTRA_API_GL: | ||||||
| 	 if (ctx->API == API_OPENGL) { | 	 if (IS_CTX_DESKTOP_GL(ctx)) { | ||||||
| 	    total++; | 	    total++; | ||||||
| 	    enabled++; | 	    enabled++; | ||||||
| 	 } | 	 } | ||||||
|   | |||||||
| @@ -41,6 +41,7 @@ shading_language_version(struct gl_context *ctx) | |||||||
| { | { | ||||||
|    switch (ctx->API) { |    switch (ctx->API) { | ||||||
|    case API_OPENGL: |    case API_OPENGL: | ||||||
|  |    case API_OPENGL_CORE: | ||||||
|       if (!ctx->Extensions.ARB_shader_objects) { |       if (!ctx->Extensions.ARB_shader_objects) { | ||||||
|          _mesa_error(ctx, GL_INVALID_ENUM, "glGetString"); |          _mesa_error(ctx, GL_INVALID_ENUM, "glGetString"); | ||||||
|          return (const GLubyte *) 0; |          return (const GLubyte *) 0; | ||||||
|   | |||||||
| @@ -3336,9 +3336,14 @@ typedef enum | |||||||
| { | { | ||||||
|    API_OPENGL, |    API_OPENGL, | ||||||
|    API_OPENGLES, |    API_OPENGLES, | ||||||
|    API_OPENGLES2 |    API_OPENGLES2, | ||||||
|  |    API_OPENGL_CORE, | ||||||
| } gl_api; | } gl_api; | ||||||
|  |  | ||||||
|  | #define IS_CTX_IN2(ctx, api1, api2) ((ctx->API == api1) || (ctx->API == api2)) | ||||||
|  | #define IS_CTX_DESKTOP_GL(ctx) IS_CTX_IN2(ctx, API_OPENGL, API_OPENGL_CORE) | ||||||
|  | #define IS_CTX_GLES(ctx) IS_CTX_IN2(ctx, API_OPENGLES, API_OPENGLES2) | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Driver-specific state flags. |  * Driver-specific state flags. | ||||||
|  * |  * | ||||||
|   | |||||||
| @@ -895,7 +895,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, | |||||||
|    } |    } | ||||||
|    /* GL_BGRA can be an internal format *only* in OpenGL ES (1.x or 2.0). |    /* GL_BGRA can be an internal format *only* in OpenGL ES (1.x or 2.0). | ||||||
|     */ |     */ | ||||||
|    if (ctx->API != API_OPENGL) { |    if (IS_CTX_GLES(ctx)) { | ||||||
|       switch (internalFormat) { |       switch (internalFormat) { | ||||||
|       case GL_BGRA: |       case GL_BGRA: | ||||||
| 	 RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888); | 	 RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888); | ||||||
|   | |||||||
| @@ -130,7 +130,7 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) | |||||||
|  |  | ||||||
|    /* GL_BGRA can be an internal format *only* in OpenGL ES (1.x or 2.0). |    /* GL_BGRA can be an internal format *only* in OpenGL ES (1.x or 2.0). | ||||||
|     */ |     */ | ||||||
|    if (ctx->API != API_OPENGL) { |    if (IS_CTX_GLES(ctx)) { | ||||||
|       switch (internalFormat) { |       switch (internalFormat) { | ||||||
|          case GL_BGRA: |          case GL_BGRA: | ||||||
|             return GL_RGBA; |             return GL_RGBA; | ||||||
|   | |||||||
| @@ -92,7 +92,7 @@ type_to_bit(const struct gl_context *ctx, GLenum type) | |||||||
|    case GL_DOUBLE: |    case GL_DOUBLE: | ||||||
|       return DOUBLE_BIT; |       return DOUBLE_BIT; | ||||||
|    case GL_FIXED: |    case GL_FIXED: | ||||||
|       return ctx->API == API_OPENGL ? FIXED_GL_BIT : FIXED_ES_BIT; |       return (IS_CTX_DESKTOP_GL(ctx)) ? FIXED_GL_BIT : FIXED_ES_BIT; | ||||||
|    case GL_UNSIGNED_INT_2_10_10_10_REV: |    case GL_UNSIGNED_INT_2_10_10_10_REV: | ||||||
|       return UNSIGNED_INT_2_10_10_10_REV_BIT; |       return UNSIGNED_INT_2_10_10_10_REV_BIT; | ||||||
|    case GL_INT_2_10_10_10_REV: |    case GL_INT_2_10_10_10_REV: | ||||||
|   | |||||||
| @@ -315,6 +315,7 @@ _mesa_compute_version(struct gl_context *ctx) | |||||||
|  |  | ||||||
|    switch (ctx->API) { |    switch (ctx->API) { | ||||||
|    case API_OPENGL: |    case API_OPENGL: | ||||||
|  |    case API_OPENGL_CORE: | ||||||
|       compute_version(ctx); |       compute_version(ctx); | ||||||
|       break; |       break; | ||||||
|    case API_OPENGLES: |    case API_OPENGLES: | ||||||
|   | |||||||
| @@ -45,57 +45,64 @@ | |||||||
|  * API dispatch table. |  * API dispatch table. | ||||||
|  */ |  */ | ||||||
| static void | static void | ||||||
| install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) | install_vtxfmt(struct gl_context *ctx, struct _glapi_table *tab, | ||||||
|  |                const GLvertexformat *vfmt) | ||||||
| { | { | ||||||
|    _mesa_install_arrayelt_vtxfmt(tab, vfmt); |    _mesa_install_arrayelt_vtxfmt(tab, vfmt); | ||||||
|  |  | ||||||
|    SET_Color3f(tab, vfmt->Color3f); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_Color3fv(tab, vfmt->Color3fv); |       SET_Color3f(tab, vfmt->Color3f); | ||||||
|    SET_Color4f(tab, vfmt->Color4f); |       SET_Color3fv(tab, vfmt->Color3fv); | ||||||
|    SET_Color4fv(tab, vfmt->Color4fv); |       SET_Color4f(tab, vfmt->Color4f); | ||||||
|    SET_EdgeFlag(tab, vfmt->EdgeFlag); |       SET_Color4fv(tab, vfmt->Color4fv); | ||||||
|  |       SET_EdgeFlag(tab, vfmt->EdgeFlag); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    _mesa_install_eval_vtxfmt(tab, vfmt); |    _mesa_install_eval_vtxfmt(tab, vfmt); | ||||||
|  |  | ||||||
|    SET_FogCoordfEXT(tab, vfmt->FogCoordfEXT); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_FogCoordfvEXT(tab, vfmt->FogCoordfvEXT); |       SET_FogCoordfEXT(tab, vfmt->FogCoordfEXT); | ||||||
|    SET_Indexf(tab, vfmt->Indexf); |       SET_FogCoordfvEXT(tab, vfmt->FogCoordfvEXT); | ||||||
|    SET_Indexfv(tab, vfmt->Indexfv); |       SET_Indexf(tab, vfmt->Indexf); | ||||||
|    SET_Materialfv(tab, vfmt->Materialfv); |       SET_Indexfv(tab, vfmt->Indexfv); | ||||||
|    SET_MultiTexCoord1fARB(tab, vfmt->MultiTexCoord1fARB); |       SET_Materialfv(tab, vfmt->Materialfv); | ||||||
|    SET_MultiTexCoord1fvARB(tab, vfmt->MultiTexCoord1fvARB); |       SET_MultiTexCoord1fARB(tab, vfmt->MultiTexCoord1fARB); | ||||||
|    SET_MultiTexCoord2fARB(tab, vfmt->MultiTexCoord2fARB); |       SET_MultiTexCoord1fvARB(tab, vfmt->MultiTexCoord1fvARB); | ||||||
|    SET_MultiTexCoord2fvARB(tab, vfmt->MultiTexCoord2fvARB); |       SET_MultiTexCoord2fARB(tab, vfmt->MultiTexCoord2fARB); | ||||||
|    SET_MultiTexCoord3fARB(tab, vfmt->MultiTexCoord3fARB); |       SET_MultiTexCoord2fvARB(tab, vfmt->MultiTexCoord2fvARB); | ||||||
|    SET_MultiTexCoord3fvARB(tab, vfmt->MultiTexCoord3fvARB); |       SET_MultiTexCoord3fARB(tab, vfmt->MultiTexCoord3fARB); | ||||||
|    SET_MultiTexCoord4fARB(tab, vfmt->MultiTexCoord4fARB); |       SET_MultiTexCoord3fvARB(tab, vfmt->MultiTexCoord3fvARB); | ||||||
|    SET_MultiTexCoord4fvARB(tab, vfmt->MultiTexCoord4fvARB); |       SET_MultiTexCoord4fARB(tab, vfmt->MultiTexCoord4fARB); | ||||||
|    SET_Normal3f(tab, vfmt->Normal3f); |       SET_MultiTexCoord4fvARB(tab, vfmt->MultiTexCoord4fvARB); | ||||||
|    SET_Normal3fv(tab, vfmt->Normal3fv); |       SET_Normal3f(tab, vfmt->Normal3f); | ||||||
|    SET_SecondaryColor3fEXT(tab, vfmt->SecondaryColor3fEXT); |       SET_Normal3fv(tab, vfmt->Normal3fv); | ||||||
|    SET_SecondaryColor3fvEXT(tab, vfmt->SecondaryColor3fvEXT); |       SET_SecondaryColor3fEXT(tab, vfmt->SecondaryColor3fEXT); | ||||||
|    SET_TexCoord1f(tab, vfmt->TexCoord1f); |       SET_SecondaryColor3fvEXT(tab, vfmt->SecondaryColor3fvEXT); | ||||||
|    SET_TexCoord1fv(tab, vfmt->TexCoord1fv); |       SET_TexCoord1f(tab, vfmt->TexCoord1f); | ||||||
|    SET_TexCoord2f(tab, vfmt->TexCoord2f); |       SET_TexCoord1fv(tab, vfmt->TexCoord1fv); | ||||||
|    SET_TexCoord2fv(tab, vfmt->TexCoord2fv); |       SET_TexCoord2f(tab, vfmt->TexCoord2f); | ||||||
|    SET_TexCoord3f(tab, vfmt->TexCoord3f); |       SET_TexCoord2fv(tab, vfmt->TexCoord2fv); | ||||||
|    SET_TexCoord3fv(tab, vfmt->TexCoord3fv); |       SET_TexCoord3f(tab, vfmt->TexCoord3f); | ||||||
|    SET_TexCoord4f(tab, vfmt->TexCoord4f); |       SET_TexCoord3fv(tab, vfmt->TexCoord3fv); | ||||||
|    SET_TexCoord4fv(tab, vfmt->TexCoord4fv); |       SET_TexCoord4f(tab, vfmt->TexCoord4f); | ||||||
|    SET_Vertex2f(tab, vfmt->Vertex2f); |       SET_TexCoord4fv(tab, vfmt->TexCoord4fv); | ||||||
|    SET_Vertex2fv(tab, vfmt->Vertex2fv); |       SET_Vertex2f(tab, vfmt->Vertex2f); | ||||||
|    SET_Vertex3f(tab, vfmt->Vertex3f); |       SET_Vertex2fv(tab, vfmt->Vertex2fv); | ||||||
|    SET_Vertex3fv(tab, vfmt->Vertex3fv); |       SET_Vertex3f(tab, vfmt->Vertex3f); | ||||||
|    SET_Vertex4f(tab, vfmt->Vertex4f); |       SET_Vertex3fv(tab, vfmt->Vertex3fv); | ||||||
|    SET_Vertex4fv(tab, vfmt->Vertex4fv); |       SET_Vertex4f(tab, vfmt->Vertex4f); | ||||||
|  |       SET_Vertex4fv(tab, vfmt->Vertex4fv); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    _mesa_install_dlist_vtxfmt(tab, vfmt);   /* glCallList / glCallLists */ |    _mesa_install_dlist_vtxfmt(tab, vfmt);   /* glCallList / glCallLists */ | ||||||
|  |  | ||||||
|    SET_Begin(tab, vfmt->Begin); |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_End(tab, vfmt->End); |       SET_Begin(tab, vfmt->Begin); | ||||||
|    SET_PrimitiveRestartNV(tab, vfmt->PrimitiveRestartNV); |       SET_End(tab, vfmt->End); | ||||||
|  |       SET_PrimitiveRestartNV(tab, vfmt->PrimitiveRestartNV); | ||||||
|  |  | ||||||
|    SET_Rectf(tab, vfmt->Rectf); |       SET_Rectf(tab, vfmt->Rectf); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    SET_DrawArrays(tab, vfmt->DrawArrays); |    SET_DrawArrays(tab, vfmt->DrawArrays); | ||||||
|    SET_DrawElements(tab, vfmt->DrawElements); |    SET_DrawElements(tab, vfmt->DrawElements); | ||||||
| @@ -154,42 +161,44 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) | |||||||
|    SET_VertexAttribI3uivEXT(tab, vfmt->VertexAttribI3uiv); |    SET_VertexAttribI3uivEXT(tab, vfmt->VertexAttribI3uiv); | ||||||
|    SET_VertexAttribI4uivEXT(tab, vfmt->VertexAttribI4uiv); |    SET_VertexAttribI4uivEXT(tab, vfmt->VertexAttribI4uiv); | ||||||
|  |  | ||||||
|    /* GL_ARB_vertex_type_10_10_10_2_rev / GL 3.3 */ |    if (ctx->API != API_OPENGL_CORE) { | ||||||
|    SET_VertexP2ui(tab, vfmt->VertexP2ui); |       /* GL_ARB_vertex_type_10_10_10_2_rev / GL 3.3 */ | ||||||
|    SET_VertexP2uiv(tab, vfmt->VertexP2uiv); |       SET_VertexP2ui(tab, vfmt->VertexP2ui); | ||||||
|    SET_VertexP3ui(tab, vfmt->VertexP3ui); |       SET_VertexP2uiv(tab, vfmt->VertexP2uiv); | ||||||
|    SET_VertexP3uiv(tab, vfmt->VertexP3uiv); |       SET_VertexP3ui(tab, vfmt->VertexP3ui); | ||||||
|    SET_VertexP4ui(tab, vfmt->VertexP4ui); |       SET_VertexP3uiv(tab, vfmt->VertexP3uiv); | ||||||
|    SET_VertexP4uiv(tab, vfmt->VertexP4uiv); |       SET_VertexP4ui(tab, vfmt->VertexP4ui); | ||||||
|  |       SET_VertexP4uiv(tab, vfmt->VertexP4uiv); | ||||||
|  |  | ||||||
|    SET_TexCoordP1ui(tab, vfmt->TexCoordP1ui); |       SET_TexCoordP1ui(tab, vfmt->TexCoordP1ui); | ||||||
|    SET_TexCoordP1uiv(tab, vfmt->TexCoordP1uiv); |       SET_TexCoordP1uiv(tab, vfmt->TexCoordP1uiv); | ||||||
|    SET_TexCoordP2ui(tab, vfmt->TexCoordP2ui); |       SET_TexCoordP2ui(tab, vfmt->TexCoordP2ui); | ||||||
|    SET_TexCoordP2uiv(tab, vfmt->TexCoordP2uiv); |       SET_TexCoordP2uiv(tab, vfmt->TexCoordP2uiv); | ||||||
|    SET_TexCoordP3ui(tab, vfmt->TexCoordP3ui); |       SET_TexCoordP3ui(tab, vfmt->TexCoordP3ui); | ||||||
|    SET_TexCoordP3uiv(tab, vfmt->TexCoordP3uiv); |       SET_TexCoordP3uiv(tab, vfmt->TexCoordP3uiv); | ||||||
|    SET_TexCoordP4ui(tab, vfmt->TexCoordP4ui); |       SET_TexCoordP4ui(tab, vfmt->TexCoordP4ui); | ||||||
|    SET_TexCoordP4uiv(tab, vfmt->TexCoordP4uiv); |       SET_TexCoordP4uiv(tab, vfmt->TexCoordP4uiv); | ||||||
|  |  | ||||||
|    SET_MultiTexCoordP1ui(tab, vfmt->MultiTexCoordP1ui); |       SET_MultiTexCoordP1ui(tab, vfmt->MultiTexCoordP1ui); | ||||||
|    SET_MultiTexCoordP2ui(tab, vfmt->MultiTexCoordP2ui); |       SET_MultiTexCoordP2ui(tab, vfmt->MultiTexCoordP2ui); | ||||||
|    SET_MultiTexCoordP3ui(tab, vfmt->MultiTexCoordP3ui); |       SET_MultiTexCoordP3ui(tab, vfmt->MultiTexCoordP3ui); | ||||||
|    SET_MultiTexCoordP4ui(tab, vfmt->MultiTexCoordP4ui); |       SET_MultiTexCoordP4ui(tab, vfmt->MultiTexCoordP4ui); | ||||||
|    SET_MultiTexCoordP1uiv(tab, vfmt->MultiTexCoordP1uiv); |       SET_MultiTexCoordP1uiv(tab, vfmt->MultiTexCoordP1uiv); | ||||||
|    SET_MultiTexCoordP2uiv(tab, vfmt->MultiTexCoordP2uiv); |       SET_MultiTexCoordP2uiv(tab, vfmt->MultiTexCoordP2uiv); | ||||||
|    SET_MultiTexCoordP3uiv(tab, vfmt->MultiTexCoordP3uiv); |       SET_MultiTexCoordP3uiv(tab, vfmt->MultiTexCoordP3uiv); | ||||||
|    SET_MultiTexCoordP4uiv(tab, vfmt->MultiTexCoordP4uiv); |       SET_MultiTexCoordP4uiv(tab, vfmt->MultiTexCoordP4uiv); | ||||||
|  |  | ||||||
|    SET_NormalP3ui(tab, vfmt->NormalP3ui); |       SET_NormalP3ui(tab, vfmt->NormalP3ui); | ||||||
|    SET_NormalP3uiv(tab, vfmt->NormalP3uiv); |       SET_NormalP3uiv(tab, vfmt->NormalP3uiv); | ||||||
|  |  | ||||||
|    SET_ColorP3ui(tab, vfmt->ColorP3ui); |       SET_ColorP3ui(tab, vfmt->ColorP3ui); | ||||||
|    SET_ColorP4ui(tab, vfmt->ColorP4ui); |       SET_ColorP4ui(tab, vfmt->ColorP4ui); | ||||||
|    SET_ColorP3uiv(tab, vfmt->ColorP3uiv); |       SET_ColorP3uiv(tab, vfmt->ColorP3uiv); | ||||||
|    SET_ColorP4uiv(tab, vfmt->ColorP4uiv); |       SET_ColorP4uiv(tab, vfmt->ColorP4uiv); | ||||||
|  |  | ||||||
|    SET_SecondaryColorP3ui(tab, vfmt->SecondaryColorP3ui); |       SET_SecondaryColorP3ui(tab, vfmt->SecondaryColorP3ui); | ||||||
|    SET_SecondaryColorP3uiv(tab, vfmt->SecondaryColorP3uiv); |       SET_SecondaryColorP3uiv(tab, vfmt->SecondaryColorP3uiv); | ||||||
|  |    } | ||||||
|  |  | ||||||
|    SET_VertexAttribP1ui(tab, vfmt->VertexAttribP1ui); |    SET_VertexAttribP1ui(tab, vfmt->VertexAttribP1ui); | ||||||
|    SET_VertexAttribP2ui(tab, vfmt->VertexAttribP2ui); |    SET_VertexAttribP2ui(tab, vfmt->VertexAttribP2ui); | ||||||
| @@ -209,8 +218,8 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) | |||||||
| void | void | ||||||
| _mesa_install_exec_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) | _mesa_install_exec_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) | ||||||
| { | { | ||||||
|    if (ctx->API == API_OPENGL) |    if (IS_CTX_DESKTOP_GL(ctx)) | ||||||
|       install_vtxfmt( ctx->Exec, vfmt ); |       install_vtxfmt( ctx, ctx->Exec, vfmt ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -221,8 +230,8 @@ _mesa_install_exec_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) | |||||||
| void | void | ||||||
| _mesa_install_save_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) | _mesa_install_save_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt) | ||||||
| { | { | ||||||
|    if (ctx->API == API_OPENGL) |    if (IS_CTX_DESKTOP_GL(ctx)) | ||||||
|       install_vtxfmt( ctx->Save, vfmt ); |       install_vtxfmt( ctx, ctx->Save, vfmt ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user