diff --git a/src/add-ons/accelerants/intel_extreme/accelerant.cpp b/src/add-ons/accelerants/intel_extreme/accelerant.cpp index b9e09f30b8..f73d7578b7 100644 --- a/src/add-ons/accelerants/intel_extreme/accelerant.cpp +++ b/src/add-ons/accelerants/intel_extreme/accelerant.cpp @@ -134,6 +134,22 @@ init_common(int device, bool isClone) sharedCloner.Keep(); regsCloner.Keep(); + // The overlay registers, hardware status, and cursor memory share + // a single area with the shared_info + + gInfo->overlay_registers = (struct overlay_registers *) + (gInfo->shared_info->graphics_memory + + gInfo->shared_info->overlay_offset); + + if (gInfo->shared_info->device_type.InGroup(INTEL_TYPE_96x)) { + // allocate some extra memory for the 3D context + if (intel_allocate_memory(INTEL_i965_3D_CONTEXT_SIZE, + B_APERTURE_NON_RESERVED, gInfo->context_base) == B_OK) { + gInfo->context_offset = gInfo->context_base + - (addr_t)gInfo->shared_info->graphics_memory; + } + } + return B_OK; } diff --git a/src/add-ons/accelerants/intel_extreme/accelerant_protos.h b/src/add-ons/accelerants/intel_extreme/accelerant_protos.h index 13b5827de5..2768ee6483 100644 --- a/src/add-ons/accelerants/intel_extreme/accelerant_protos.h +++ b/src/add-ons/accelerants/intel_extreme/accelerant_protos.h @@ -21,12 +21,12 @@ void spin(bigtime_t delay); // general status_t intel_init_accelerant(int fd); -//ssize_t intel_accelerant_clone_info_size(void); -//void intel_get_accelerant_clone_info(void *data); -//status_t intel_clone_accelerant(void *data); +ssize_t intel_accelerant_clone_info_size(void); +void intel_get_accelerant_clone_info(void *data); +status_t intel_clone_accelerant(void *data); void intel_uninit_accelerant(void); -//status_t intel_get_accelerant_device_info(accelerant_device_info *info); -//sem_id intel_accelerant_retrace_semaphore(void); +status_t intel_get_accelerant_device_info(accelerant_device_info *info); +sem_id intel_accelerant_retrace_semaphore(void); // modes & constraints uint32 intel_accelerant_mode_count(void);