diff --git a/configure.ac b/configure.ac index c352cf5a536..2fcfd68faa2 100644 --- a/configure.ac +++ b/configure.ac @@ -1039,7 +1039,7 @@ fi enable_dricore=no enable_megadriver=no for driver in $DRI_DIRS; do - if test $driver != "i965" -a $driver != "nouveau"; then + if test $driver != "i965" -a $driver != "nouveau" -a $driver != "i915"; then enable_dricore=yes else enable_megadriver=yes diff --git a/src/mesa/drivers/dri/Makefile.am b/src/mesa/drivers/dri/Makefile.am index d69bf38b535..33268408668 100644 --- a/src/mesa/drivers/dri/Makefile.am +++ b/src/mesa/drivers/dri/Makefile.am @@ -7,7 +7,9 @@ MEGADRIVERS_DEPS = SUBDIRS+=common if HAVE_I915_DRI -SUBDIRS+=i915 +SUBDIRS += i915 +MEGADRIVERS_DEPS += i915/libi915_dri.la +MEGADRIVERS += i915_dri.so endif if HAVE_I965_DRI diff --git a/src/mesa/drivers/dri/i915/Makefile.am b/src/mesa/drivers/dri/i915/Makefile.am index b07ad138798..ac49360a9cd 100644 --- a/src/mesa/drivers/dri/i915/Makefile.am +++ b/src/mesa/drivers/dri/i915/Makefile.am @@ -35,18 +35,6 @@ AM_CFLAGS = \ $(VISIBILITY_CFLAGS) \ $(INTEL_CFLAGS) -dridir = $(DRI_DRIVER_INSTALL_DIR) -dri_LTLIBRARIES = i915_dri.la - -i915_dri_la_SOURCES = $(i915_FILES) -i915_dri_la_LDFLAGS = $(DRI_DRIVER_LDFLAGS) -i915_dri_la_LIBADD = \ - ../common/libdricommon.la \ - $(DRI_LIB_DEPS) \ - $(INTEL_LIBS) - -# Provide compatibility with scripts for the old Mesa build system for -# a while by putting a link to the driver into /lib of the build tree. -all-local: i915_dri.la - $(MKDIR_P) $(top_builddir)/$(LIB_DIR); - ln -f .libs/i915_dri.so $(top_builddir)/$(LIB_DIR)/i915_dri.so; +noinst_LTLIBRARIES = libi915_dri.la +libi915_dri_la_SOURCES = $(i915_FILES) +libi915_dri_la_LIBADD = $(INTEL_LIBS) diff --git a/src/mesa/drivers/dri/i915/intel_context.c b/src/mesa/drivers/dri/i915/intel_context.c index d25358b39a7..2748514b248 100644 --- a/src/mesa/drivers/dri/i915/intel_context.c +++ b/src/mesa/drivers/dri/i915/intel_context.c @@ -58,9 +58,7 @@ #include "utils.h" #include "../glsl/ralloc.h" -#ifndef INTEL_DEBUG int INTEL_DEBUG = (0); -#endif static const GLubyte * diff --git a/src/mesa/drivers/dri/i915/intel_mipmap_tree.h b/src/mesa/drivers/dri/i915/intel_mipmap_tree.h index 2b2a644c20b..1142af60bb7 100644 --- a/src/mesa/drivers/dri/i915/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/i915/intel_mipmap_tree.h @@ -30,6 +30,7 @@ #include +#include "intel_screen.h" #include "intel_regions.h" #ifdef __cplusplus diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c index 49bae5d67f8..3f547524514 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.c +++ b/src/mesa/drivers/dri/i915/intel_screen.c @@ -1190,7 +1190,7 @@ intelReleaseBuffer(__DRIscreen *screen, __DRIbuffer *buffer) } -const struct __DriverAPIRec driDriverAPI = { +static const struct __DriverAPIRec i915_driver_api = { .InitScreen = intelInitScreen2, .DestroyScreen = intelDestroyScreen, .CreateContext = intelCreateContext, @@ -1203,10 +1203,23 @@ const struct __DriverAPIRec driDriverAPI = { .ReleaseBuffer = intelReleaseBuffer }; +static const struct __DRIDriverVtableExtensionRec i915_vtable = { + .base = { __DRI_DRIVER_VTABLE, 1 }, + .vtable = &i915_driver_api, +}; + /* This is the table of extensions that the loader will dlsym() for. */ -PUBLIC const __DRIextension *__driDriverExtensions[] = { +static const __DRIextension *i915_driver_extensions[] = { &driCoreExtension.base, &driDRI2Extension.base, + &i915_vtable.base, &i915_config_options.base, NULL }; + +PUBLIC const __DRIextension **__driDriverGetExtensions_i915(void) +{ + globalDriverAPI = &i915_driver_api; + + return i915_driver_extensions; +} diff --git a/src/mesa/drivers/dri/i915/intel_screen.h b/src/mesa/drivers/dri/i915/intel_screen.h index 331ce90f7aa..4ae259cccdf 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.h +++ b/src/mesa/drivers/dri/i915/intel_screen.h @@ -55,10 +55,113 @@ struct intel_screen driOptionCache optionCache; }; +/* These defines are to ensure that i915_dri's symbols don't conflict with + * i965's when linked together. + */ +#define intel_region_alloc old_intel_region_alloc +#define intel_region_alloc_for_fd old_intel_region_alloc_for_fd +#define intel_region_alloc_for_handle old_intel_region_alloc_for_handle +#define intel_region_flink old_intel_region_flink +#define intel_region_get_aligned_offset old_intel_region_get_aligned_offset +#define intel_region_get_tile_masks old_intel_region_get_tile_masks +#define intel_region_reference old_intel_region_reference +#define intel_region_release old_intel_region_release +#define intel_bufferobj_buffer old_intel_bufferobj_buffer +#define intel_bufferobj_source old_intel_bufferobj_source +#define intelInitBufferObjectFuncs old_intelInitBufferObjectFuncs +#define intel_upload_data old_intel_upload_data +#define intel_upload_finish old_intel_upload_finish +#define intel_batchbuffer_data old_intel_batchbuffer_data +#define intel_batchbuffer_emit_mi_flush old_intel_batchbuffer_emit_mi_flush +#define intel_batchbuffer_emit_reloc old_intel_batchbuffer_emit_reloc +#define intel_batchbuffer_emit_reloc_fenced old_intel_batchbuffer_emit_reloc_fenced +#define _intel_batchbuffer_flush old__intel_batchbuffer_flush +#define intel_batchbuffer_free old_intel_batchbuffer_free +#define intel_batchbuffer_init old_intel_batchbuffer_init +#define intelInitClearFuncs old_intelInitClearFuncs +#define intelInitExtensions old_intelInitExtensions +#define intel_miptree_copy_teximage old_intel_miptree_copy_teximage +#define intel_miptree_create old_intel_miptree_create +#define intel_miptree_create_for_bo old_intel_miptree_create_for_bo +#define intel_miptree_create_for_dri2_buffer old_intel_miptree_create_for_dri2_buffer +#define intel_miptree_create_for_renderbuffer old_intel_miptree_create_for_renderbuffer +#define intel_miptree_create_layout old_intel_miptree_create_layout +#define intel_miptree_get_dimensions_for_image old_intel_miptree_get_dimensions_for_image +#define intel_miptree_get_image_offset old_intel_miptree_get_image_offset +#define intel_miptree_get_tile_offsets old_intel_miptree_get_tile_offsets +#define intel_miptree_map old_intel_miptree_map +#define intel_miptree_map_raw old_intel_miptree_map_raw +#define intel_miptree_match_image old_intel_miptree_match_image +#define intel_miptree_reference old_intel_miptree_reference +#define intel_miptree_release old_intel_miptree_release +#define intel_miptree_set_image_offset old_intel_miptree_set_image_offset +#define intel_miptree_set_level_info old_intel_miptree_set_level_info +#define intel_miptree_unmap old_intel_miptree_unmap +#define intel_miptree_unmap_raw old_intel_miptree_unmap_raw +#define i945_miptree_layout_2d old_i945_miptree_layout_2d +#define intel_get_texture_alignment_unit old_intel_get_texture_alignment_unit +#define intelInitTextureImageFuncs old_intelInitTextureImageFuncs +#define intel_miptree_create_for_teximage old_intel_miptree_create_for_teximage +#define intelSetTexBuffer old_intelSetTexBuffer +#define intelSetTexBuffer2 old_intelSetTexBuffer2 +#define intelInitTextureSubImageFuncs old_intelInitTextureSubImageFuncs +#define intelInitTextureCopyImageFuncs old_intelInitTextureCopyImageFuncs +#define intel_finalize_mipmap_tree old_intel_finalize_mipmap_tree +#define intelInitTextureFuncs old_intelInitTextureFuncs +#define intel_check_blit_fragment_ops old_intel_check_blit_fragment_ops +#define intelInitPixelFuncs old_intelInitPixelFuncs +#define intelBitmap old_intelBitmap +#define intelCopyPixels old_intelCopyPixels +#define intelDrawPixels old_intelDrawPixels +#define intelReadPixels old_intelReadPixels +#define intel_check_front_buffer_rendering old_intel_check_front_buffer_rendering +#define intelInitBufferFuncs old_intelInitBufferFuncs +#define intelClearWithBlit old_intelClearWithBlit +#define intelEmitCopyBlit old_intelEmitCopyBlit +#define intelEmitImmediateColorExpandBlit old_intelEmitImmediateColorExpandBlit +#define intel_emit_linear_blit old_intel_emit_linear_blit +#define intel_miptree_blit old_intel_miptree_blit +#define i945_miptree_layout old_i945_miptree_layout +#define intel_init_texture_formats old_intel_init_texture_formats +#define intelCalcViewport old_intelCalcViewport +#define INTEL_DEBUG old_INTEL_DEBUG +#define intelDestroyContext old_intelDestroyContext +#define intelFinish old_intelFinish +#define _intel_flush old__intel_flush +#define intel_flush_rendering_to_batch old_intel_flush_rendering_to_batch +#define intelInitContext old_intelInitContext +#define intelInitDriverFunctions old_intelInitDriverFunctions +#define intelMakeCurrent old_intelMakeCurrent +#define intel_prepare_render old_intel_prepare_render +#define intelUnbindContext old_intelUnbindContext +#define intel_update_renderbuffers old_intel_update_renderbuffers +#define aub_dump_bmp old_aub_dump_bmp +#define get_time old_get_time +#define intel_translate_blend_factor old_intel_translate_blend_factor +#define intel_translate_compare_func old_intel_translate_compare_func +#define intel_translate_logic_op old_intel_translate_logic_op +#define intel_translate_shadow_compare_func old_intel_translate_shadow_compare_func +#define intel_translate_stencil_op old_intel_translate_stencil_op +#define intel_init_syncobj_functions old_intel_init_syncobj_functions +#define intelChooseRenderState old_intelChooseRenderState +#define intelFallback old_intelFallback +#define intel_finish_vb old_intel_finish_vb +#define intel_flush_prim old_intel_flush_prim +#define intel_get_prim_space old_intel_get_prim_space +#define intelInitTriFuncs old_intelInitTriFuncs +#define intel_set_prim old_intel_set_prim +#define intel_create_private_renderbuffer old_intel_create_private_renderbuffer +#define intel_create_renderbuffer old_intel_create_renderbuffer +#define intel_fbo_init old_intel_fbo_init +#define intel_get_rb_region old_intel_get_rb_region +#define intel_renderbuffer_set_draw_offset old_intel_renderbuffer_set_draw_offset + extern void intelDestroyContext(__DRIcontext * driContextPriv); extern GLboolean intelUnbindContext(__DRIcontext * driContextPriv); +const __DRIextension **__driDriverGetExtensions_i915(void); + extern GLboolean intelMakeCurrent(__DRIcontext * driContextPriv, __DRIdrawable * driDrawPriv,