- enable x86 optimisations for GCC builds

svn path=/trunk/; revision=60155
This commit is contained in:
Jérôme Gardou 2013-09-15 22:25:43 +00:00
parent 4deaf51f33
commit 7f2ce261b2
4 changed files with 209 additions and 1 deletions

View file

@ -14,6 +14,19 @@ add_definitions(
-D_GLAPI_NO_EXPORTS # prevent _glapi_* from being declared __declspec(dllimport)
)
if((ARCH STREQUAL "i386") AND (NOT MSVC))
add_definitions(
-DUSE_X86_ASM
-DUSE_MMX_ASM
-DUSE_3DNOW_ASM
-DUSE_SSE_ASM
)
add_subdirectory(x86)
set(mesa_asm_lib mesa_x86)
else()
set(mesa_asm_lib)
endif()
add_subdirectory(drivers/common)
add_subdirectory(drivers/osmesa)
add_subdirectory(main)

View file

@ -15,7 +15,9 @@ target_link_libraries(osmesa
mesa_vbo
mesa_program
mesa_math
mesa_glsl)
mesa_glsl
${mesa_asm_lib}
)
set_module_type(osmesa win32dll)
add_importlibs(osmesa msvcrt kernel32 ntdll)

View file

@ -0,0 +1,31 @@
list(APPEND SOURCE
common_x86.c
x86_xform.c
3dnow.c
sse.c
common_x86_asm.S
x86_xform2.S
x86_xform3.S
x86_xform4.S
x86_cliptest.S
mmx_blend.S
3dnow_xform1.S
3dnow_xform2.S
3dnow_xform3.S
3dnow_xform4.S
3dnow_normal.S
sse_xform1.S
sse_xform2.S
sse_xform3.S
sse_xform4.S
sse_normal.S
read_rgba_span_x86.S
rtasm/x86sse.c
)
add_library(mesa_x86 STATIC ${SOURCE})
if(NOT MSVC)
add_compile_flags("-Wno-format")
endif()

View file

@ -0,0 +1,162 @@
/*
* This file is automatically generated from the Mesa internal type
* definitions. Do not edit directly.
*/
#ifndef __ASM_TYPES_H__
#define __ASM_TYPES_H__
/* =============================================================
* Offsets for struct gl_context
*/
#define CTX_DRIVER_CTX 880
#define CTX_LIGHT_ENABLED 39952
#define CTX_LIGHT_SHADE_MODEL 39956
#define CTX_LIGHT_COLOR_MAT_FACE 39964
#define CTX_LIGHT_COLOR_MAT_MODE 39968
#define CTX_LIGHT_COLOR_MAT_MASK 39972
#define CTX_LIGHT_COLOR_MAT_ENABLED 39976
#define CTX_LIGHT_ENABLED_LIST 39988
#define CTX_LIGHT_NEED_VERTS 44341
#define CTX_LIGHT_FLAGS 44344
#define CTX_LIGHT_BASE_COLOR 44348
/* =============================================================
* Offsets for struct vertex_buffer
*/
#define VB_SIZE 0
#define VB_COUNT 4
#define VB_ELTS 8
#define VB_OBJ_PTR 60
#define VB_EYE_PTR 12
#define VB_CLIP_PTR 16
#define VB_PROJ_CLIP_PTR 20
#define VB_CLIP_OR_MASK 24
#define VB_CLIP_MASK 28
#define VB_NORMAL_PTR 68
#define VB_EDGE_FLAG 36
#define VB_TEX0_COORD_PTR 92
#define VB_TEX1_COORD_PTR 96
#define VB_TEX2_COORD_PTR 100
#define VB_TEX3_COORD_PTR 104
#define VB_INDEX_PTR 84
#define VB_COLOR_PTR 72
#define VB_SECONDARY_COLOR_PTR 76
#define VB_FOG_COORD_PTR 80
#define VB_PRIMITIVE 52
/*
* Flags for struct vertex_buffer
*/
#define VERT_BIT_OBJ 0x1
#define VERT_BIT_NORM 0x4
#define VERT_BIT_RGBA 0x8
#define VERT_BIT_SPEC_RGB 0x10
#define VERT_BIT_FOG_COORD 0x20
#define VERT_BIT_TEX0 0x100
#define VERT_BIT_TEX1 0x200
#define VERT_BIT_TEX2 0x400
#define VERT_BIT_TEX3 0x800
/* =============================================================
* Offsets for GLvector4f
*/
#define V4F_DATA 0
#define V4F_START 4
#define V4F_COUNT 8
#define V4F_STRIDE 12
#define V4F_SIZE 16
#define V4F_FLAGS 20
/*
* Flags for GLvector4f
*/
#define VEC_MALLOC 0x10
#define VEC_NOT_WRITEABLE 0x40
#define VEC_BAD_STRIDE 0x100
#define VEC_SIZE_1 0x1
#define VEC_SIZE_2 0x3
#define VEC_SIZE_3 0x7
#define VEC_SIZE_4 0xf
/* =============================================================
* Offsets for GLmatrix
*/
#define MATRIX_DATA 0
#define MATRIX_INV 4
#define MATRIX_FLAGS 8
#define MATRIX_TYPE 12
/* =============================================================
* Offsets for struct gl_light
*/
#define LIGHT_NEXT 0
#define LIGHT_PREV 4
#define LIGHT_AMBIENT 8
#define LIGHT_DIFFUSE 24
#define LIGHT_SPECULAR 40
#define LIGHT_EYE_POSITION 56
#define LIGHT_SPOT_DIRECTION 72
#define LIGHT_SPOT_EXPONENT 88
#define LIGHT_SPOT_CUTOFF 92
#define LIGHT_COS_CUTOFF 100
#define LIGHT_CONST_ATTEN 104
#define LIGHT_LINEAR_ATTEN 108
#define LIGHT_QUADRATIC_ATTEN 112
#define LIGHT_ENABLED 116
#define LIGHT_FLAGS 120
#define LIGHT_POSITION 124
#define LIGHT_VP_INF_NORM 140
#define LIGHT_H_INF_NORM 152
#define LIGHT_NORM_DIRECTION 164
#define LIGHT_VP_INF_SPOT_ATTEN 180
#define LIGHT_SPOT_EXP_TABLE 184
#define LIGHT_MAT_AMBIENT 4280
#define LIGHT_MAT_DIFFUSE 4304
#define LIGHT_MAT_SPECULAR 4328
#define SIZEOF_GL_LIGHT 4352
/*
* Flags for struct gl_light
*/
#define LIGHT_SPOT 0x1
#define LIGHT_LOCAL_VIEWER 0x2
#define LIGHT_POSITIONAL 0x4
#define LIGHT_NEED_VERTICES 0x6
/* =============================================================
* Offsets for struct gl_lightmodel
*/
#define LIGHT_MODEL_AMBIENT 0
#define LIGHT_MODEL_LOCAL_VIEWER 16
#define LIGHT_MODEL_TWO_SIDE 17
#define LIGHT_MODEL_COLOR_CONTROL 20
#endif /* __ASM_TYPES_H__ */