intel_screen.c File Reference

Include dependency graph for intel_screen.c:

Go to the source code of this file.

Functions

static void intelCreateSurface (struct intel_screen *intelScreen, struct pipe_winsys *winsys, unsigned handle)
static void intelPrintDRIInfo (struct intel_screen *intelScreen, __DRIscreenPrivate *sPriv, I830DRIPtr gDRIPriv)
void intelUpdateScreenRotation (__DRIscreenPrivate *sPriv, drmI830Sarea *sarea)
 Use the information in the sarea to update the screen parameters related to screen rotation.
boolean intelCreatePools (__DRIscreenPrivate *sPriv)
static const char * intel_get_name (struct pipe_winsys *winsys)
static void intel_flush_frontbuffer (struct pipe_winsys *winsys, struct pipe_surface *surf, void *context_private)
static boolean intelInitDriver (__DRIscreenPrivate *sPriv)
static void intelDestroyScreen (__DRIscreenPrivate *sPriv)
static boolean intelCreateBuffer (__DRIscreenPrivate *driScrnPriv, __DRIdrawablePrivate *driDrawPriv, const __GLcontextModes *visual, boolean isPixmap)
 This is called when we need to set up GL rendering to a new X window.
static void intelDestroyBuffer (__DRIdrawablePrivate *driDrawPriv)
static int intelGetSwapInfo (__DRIdrawablePrivate *dPriv, __DRIswapInfo *sInfo)
 Get information about previous buffer swaps.
static void intelSetTexOffset (__DRIcontext *pDRICtx, int texname, unsigned long long offset, int depth, uint pitch)
static __GLcontextModes * intelFillInModes (unsigned pixel_bits, unsigned depth_bits, unsigned stencil_bits, boolean have_back_buffer)
PUBLIC void * __driCreateNewScreen_20050727 (__DRInativeDisplay *dpy, int scrn, __DRIscreen *psc, const __GLcontextModes *modes, const __DRIversion *ddx_version, const __DRIversion *dri_version, const __DRIversion *drm_version, const __DRIframebuffer *frame_buffer, drmAddress pSAREA, int fd, int internal_api_version, const __DRIinterfaceMethods *interface, __GLcontextModes **driver_modes)
 This is the bootstrap function for the driver.

Variables

PUBLIC const char __driConfigOptions []
const uint __driNConfigOptions = 3
struct dri_extension card_extensions []
 Extension strings exported by the intel driver.
static struct __DriverAPIRec intelAPI


Function Documentation

PUBLIC void* __driCreateNewScreen_20050727 ( __DRInativeDisplay *  dpy,
int  scrn,
__DRIscreen *  psc,
const __GLcontextModes *  modes,
const __DRIversion *  ddx_version,
const __DRIversion *  dri_version,
const __DRIversion *  drm_version,
const __DRIframebuffer *  frame_buffer,
drmAddress  pSAREA,
int  fd,
int  internal_api_version,
const __DRIinterfaceMethods *  interface,
__GLcontextModes **  driver_modes 
)

This is the bootstrap function for the driver.

libGL supplies all of the requisite information about the system, and the driver initializes itself. This routine also fills in the linked list pointed to by driver_modes with the __GLcontextModes that the driver can support for windows or pbuffers.

Returns:
A pointer to a __DRIscreenPrivate on success, or NULL on failure.

Definition at line 555 of file intel_screen.c.

References card_extensions, _I830DRIRec::cpp, and intelFillInModes().

00566 {
00567    __DRIscreenPrivate *psp;
00568    static const __DRIversion ddx_expected = { 1, 7, 0 };
00569    static const __DRIversion dri_expected = { 4, 0, 0 };
00570    static const __DRIversion drm_expected = { 1, 7, 0 };
00571 
00572    dri_interface = interface;
00573 
00574    if (!driCheckDriDdxDrmVersions2("i915",
00575                                    dri_version, &dri_expected,
00576                                    ddx_version, &ddx_expected,
00577                                    drm_version, &drm_expected)) {
00578       return NULL;
00579    }
00580 
00581    psp = __driUtilCreateNewScreen(dpy, scrn, psc, NULL,
00582                                   ddx_version, dri_version, drm_version,
00583                                   frame_buffer, pSAREA, fd,
00584                                   internal_api_version, &intelAPI);
00585 
00586    if (psp != NULL) {
00587       I830DRIPtr dri_priv = (I830DRIPtr) psp->pDevPriv;
00588       *driver_modes = intelFillInModes(dri_priv->cpp * 8,
00589                                        (dri_priv->cpp == 2) ? 16 : 24,
00590                                        (dri_priv->cpp == 2) ? 0 : 8, 1);
00591 
00592       /* Calling driInitExtensions here, with a NULL context pointer,
00593        * does not actually enable the extensions.  It just makes sure
00594        * that all the dispatch offsets for all the extensions that
00595        * *might* be enables are known.  This is needed because the
00596        * dispatch offsets need to be known when _mesa_context_create
00597        * is called, but we can't enable the extensions until we have a
00598        * context pointer.
00599        *
00600        * Hello chicken.  Hello egg.  How are you two today?
00601        */
00602       driInitExtensions(NULL, card_extensions, GL_FALSE);
00603    }
00604 
00605    return (void *) psp;
00606 }

static void intel_flush_frontbuffer ( struct pipe_winsys winsys,
struct pipe_surface surf,
void *  context_private 
) [static]

Definition at line 252 of file intel_screen.c.

References intel_context::driDrawable, and intelDisplaySurface().

00255 {
00256    struct intel_context *intel = (struct intel_context *) context_private;
00257    __DRIdrawablePrivate *dPriv = intel->driDrawable;
00258 
00259    intelDisplaySurface(dPriv, surf, NULL);
00260 }

static const char* intel_get_name ( struct pipe_winsys winsys  )  [static]

Definition at line 241 of file intel_screen.c.

00242 {
00243    return "Intel/DRI/ttm";
00244 }

static boolean intelCreateBuffer ( __DRIscreenPrivate *  driScrnPriv,
__DRIdrawablePrivate *  driDrawPriv,
const __GLcontextModes *  visual,
boolean  isPixmap 
) [static]

This is called when we need to set up GL rendering to a new X window.

Definition at line 337 of file intel_screen.c.

References CALLOC_STRUCT, PIPE_FORMAT_A8R8G8B8_UNORM, PIPE_FORMAT_NONE, PIPE_FORMAT_R5G6B5_UNORM, PIPE_FORMAT_S8Z24_UNORM, PIPE_FORMAT_Z16_UNORM, st_create_framebuffer(), and intel_framebuffer::stfb.

00340 {
00341    if (isPixmap) {
00342       return GL_FALSE;          /* not implemented */
00343    }
00344    else {
00345       enum pipe_format colorFormat, depthFormat, stencilFormat;
00346       struct intel_framebuffer *intelfb = CALLOC_STRUCT(intel_framebuffer);
00347 
00348       if (!intelfb)
00349          return GL_FALSE;
00350 
00351       if (visual->redBits == 5)
00352          colorFormat = PIPE_FORMAT_R5G6B5_UNORM;
00353       else
00354          colorFormat = PIPE_FORMAT_A8R8G8B8_UNORM;
00355 
00356       if (visual->depthBits == 16)
00357          depthFormat = PIPE_FORMAT_Z16_UNORM;
00358       else if (visual->depthBits == 24)
00359          depthFormat = PIPE_FORMAT_S8Z24_UNORM;
00360       else
00361          depthFormat = PIPE_FORMAT_NONE;
00362 
00363       if (visual->stencilBits == 8)
00364          stencilFormat = PIPE_FORMAT_S8Z24_UNORM;
00365       else
00366          stencilFormat = PIPE_FORMAT_NONE;
00367 
00368       intelfb->stfb = st_create_framebuffer(visual,
00369                                             colorFormat,
00370                                             depthFormat,
00371                                             stencilFormat,
00372                                             driDrawPriv->w,
00373                                             driDrawPriv->h,
00374                                             (void*) intelfb);
00375       if (!intelfb->stfb) {
00376          free(intelfb);
00377          return GL_FALSE;
00378       }
00379 
00380       driDrawPriv->driverPrivate = (void *) intelfb;
00381       return GL_TRUE;
00382    }
00383 }

boolean intelCreatePools ( __DRIscreenPrivate *  sPriv  ) 

Definition at line 225 of file intel_screen.c.

References intel_screen::havePools, intel_screen(), intelUpdateScreenRotation(), and intel_screen::sarea.

00226 {
00227    //unsigned batchPoolSize = 1024*1024;
00228    struct intel_screen *intelScreen = intel_screen(sPriv);
00229 
00230    if (intelScreen->havePools)
00231       return GL_TRUE;
00232 
00233    intelScreen->havePools = GL_TRUE;
00234 
00235    intelUpdateScreenRotation(sPriv, intelScreen->sarea);
00236 
00237    return GL_TRUE;
00238 }

static void intelCreateSurface ( struct intel_screen intelScreen,
struct pipe_winsys winsys,
unsigned  handle 
) [static]

Definition at line 50 of file intel_screen.c.

References assert, intel_screen::base, pipe_texture::block, intel_screen::buffer, intel_screen::cpp, pipe_texture::depth, dri_bo(), pipe_texture::format, intel_screen::front, pipe_screen::get_tex_surface, intel_screen::height, pipe_texture::height, intel_be_buffer_from_handle(), pipe_texture::last_level, pf_get_block(), pipe_buffer_reference(), PIPE_BUFFER_USAGE_GPU_WRITE, PIPE_FORMAT_A8R8G8B8_UNORM, PIPE_TEXTURE_2D, PIPE_TEXTURE_USAGE_DISPLAY_TARGET, intel_screen::pitch, intel_be_device::screen, intel_screen::surface, pipe_texture::target, pipe_texture::tex_usage, intel_screen::texture, pipe_screen::texture_blanket, intel_screen::width, and pipe_texture::width.

00051 {
00052    struct pipe_screen *screen = intelScreen->base.screen;
00053    struct pipe_texture *texture;
00054    struct pipe_texture templat;
00055    struct pipe_surface *surface;
00056    struct pipe_buffer *buffer;
00057    unsigned pitch;
00058 
00059    assert(intelScreen->front.cpp == 4);
00060 
00061    buffer = intel_be_buffer_from_handle(&intelScreen->base,
00062                                         "front", handle);
00063 
00064    if (!buffer)
00065       return;
00066 
00067    intelScreen->front.buffer = dri_bo(buffer);
00068 
00069    memset(&templat, 0, sizeof(templat));
00070    templat.tex_usage |= PIPE_TEXTURE_USAGE_DISPLAY_TARGET;
00071    templat.target = PIPE_TEXTURE_2D;
00072    templat.last_level = 0;
00073    templat.depth[0] = 1;
00074    templat.format = PIPE_FORMAT_A8R8G8B8_UNORM;
00075    templat.width[0] = intelScreen->front.width;
00076    templat.height[0] = intelScreen->front.height;
00077    pf_get_block(templat.format, &templat.block);
00078    pitch = intelScreen->front.pitch;
00079 
00080    texture = screen->texture_blanket(screen,
00081                                      &templat,
00082                                      &pitch,
00083                                      buffer);
00084 
00085    /* Unref the buffer we don't need it anyways */
00086    pipe_buffer_reference(screen, &buffer, NULL);
00087 
00088    surface = screen->get_tex_surface(screen,
00089                                      texture,
00090                                      0,
00091                                      0,
00092                                      0,
00093                                      PIPE_BUFFER_USAGE_GPU_WRITE);
00094 
00095    intelScreen->front.texture = texture;
00096    intelScreen->front.surface = surface;
00097 }

static void intelDestroyBuffer ( __DRIdrawablePrivate *  driDrawPriv  )  [static]

Definition at line 386 of file intel_screen.c.

References assert, intel_framebuffer(), st_unreference_framebuffer(), and intel_framebuffer::stfb.

00387 {
00388    struct intel_framebuffer *intelfb = intel_framebuffer(driDrawPriv);
00389    assert(intelfb->stfb);
00390    st_unreference_framebuffer(&intelfb->stfb);
00391    free(intelfb);
00392 }

static void intelDestroyScreen ( __DRIscreenPrivate *  sPriv  )  [static]

Definition at line 321 of file intel_screen.c.

References intel_screen::base, FREE, intel_be_destroy_device(), and intel_screen().

00322 {
00323    struct intel_screen *intelScreen = intel_screen(sPriv);
00324 
00325    intel_be_destroy_device(&intelScreen->base);
00326    /*  intelUnmapScreenRegions(intelScreen); */
00327 
00328    FREE(intelScreen);
00329    sPriv->private = NULL;
00330 }

static __GLcontextModes* intelFillInModes ( unsigned  pixel_bits,
unsigned  depth_bits,
unsigned  stencil_bits,
boolean  have_back_buffer 
) [static]

Definition at line 458 of file intel_screen.c.

00460 {
00461    __GLcontextModes *modes;
00462    __GLcontextModes *m;
00463    unsigned num_modes;
00464    unsigned depth_buffer_factor;
00465    unsigned back_buffer_factor;
00466    GLenum fb_format;
00467    GLenum fb_type;
00468 
00469    /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't
00470     * support pageflipping at all.
00471     */
00472    static const GLenum back_buffer_modes[] = {
00473       GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
00474    };
00475 
00476    uint8_t depth_bits_array[3];
00477    uint8_t stencil_bits_array[3];
00478    uint8_t msaa_samples_array[1];
00479 
00480 
00481    depth_bits_array[0] = 0;
00482    depth_bits_array[1] = depth_bits;
00483    depth_bits_array[2] = depth_bits;
00484    msaa_samples_array[0] = 0;
00485 
00486    /* Just like with the accumulation buffer, always provide some modes
00487     * with a stencil buffer.  It will be a sw fallback, but some apps won't
00488     * care about that.
00489     */
00490    stencil_bits_array[0] = 0;
00491    stencil_bits_array[1] = 0;
00492    if (depth_bits == 24)
00493       stencil_bits_array[1] = (stencil_bits == 0) ? 8 : stencil_bits;
00494 
00495    stencil_bits_array[2] = (stencil_bits == 0) ? 8 : stencil_bits;
00496 
00497    depth_buffer_factor = ((depth_bits != 0) || (stencil_bits != 0)) ? 3 : 1;
00498    back_buffer_factor = (have_back_buffer) ? 3 : 1;
00499 
00500    num_modes = depth_buffer_factor * back_buffer_factor * 4;
00501 
00502    if (pixel_bits == 16) {
00503       fb_format = GL_RGB;
00504       fb_type = GL_UNSIGNED_SHORT_5_6_5;
00505    }
00506    else {
00507       fb_format = GL_BGRA;
00508       fb_type = GL_UNSIGNED_INT_8_8_8_8_REV;
00509    }
00510 
00511    modes =
00512       (*dri_interface->createContextModes) (num_modes,
00513                                             sizeof(__GLcontextModes));
00514    m = modes;
00515    if (!driFillInModes(&m, fb_format, fb_type,
00516                        depth_bits_array, stencil_bits_array,
00517                        depth_buffer_factor, back_buffer_modes,
00518                        back_buffer_factor, msaa_samples_array, 1, GLX_TRUE_COLOR)) {
00519       fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
00520               __LINE__);
00521       return NULL;
00522    }
00523    if (!driFillInModes(&m, fb_format, fb_type,
00524                        depth_bits_array, stencil_bits_array,
00525                        depth_buffer_factor, back_buffer_modes,
00526                        back_buffer_factor, msaa_samples_array, 1, GLX_DIRECT_COLOR)) {
00527       fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
00528               __LINE__);
00529       return NULL;
00530    }
00531 
00532    /* Mark the visual as slow if there are "fake" stencil bits.
00533     */
00534    for (m = modes; m != NULL; m = m->next) {
00535       if ((m->stencilBits != 0) && (m->stencilBits != stencil_bits)) {
00536          m->visualRating = GLX_SLOW_CONFIG;
00537       }
00538    }
00539 
00540    return modes;
00541 }

static int intelGetSwapInfo ( __DRIdrawablePrivate *  dPriv,
__DRIswapInfo *  sInfo 
) [static]

Get information about previous buffer swaps.

Definition at line 399 of file intel_screen.c.

00400 {
00401    if ((dPriv == NULL) || (dPriv->driverPrivate == NULL)
00402        || (sInfo == NULL)) {
00403       return -1;
00404    }
00405 
00406    return 0;
00407 }

static boolean intelInitDriver ( __DRIscreenPrivate *  sPriv  )  [static]

Definition at line 263 of file intel_screen.c.

References __driConfigOptions, assert, intel_be_device::base, intel_screen::base, _I830DRIRec::bitsPerPixel, CALLOC_STRUCT, _I830DRIRec::cpp, intel_screen::cpp, _I830DRIRec::deviceID, intel_screen::deviceID, intel_screen::drmMinor, intel_be_device::fd, pipe_winsys::flush_frontbuffer, intel_screen::front, pipe_winsys::get_name, intel_be_init_device(), intel_flush_frontbuffer(), intel_get_name(), intelPrintDRIInfo(), intelUpdateScreenRotation(), intel_screen::optionCache, intel_screen::sarea, and _I830DRIRec::sarea_priv_offset.

00264 {
00265    struct intel_screen *intelScreen;
00266    I830DRIPtr gDRIPriv = (I830DRIPtr) sPriv->pDevPriv;
00267 
00268    PFNGLXSCRENABLEEXTENSIONPROC glx_enable_extension =
00269       (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->
00270                                       getProcAddress("glxEnableExtension"));
00271    void *const psc = sPriv->psc->screenConfigs;
00272 
00273    if (sPriv->devPrivSize != sizeof(I830DRIRec)) {
00274       fprintf(stderr,
00275               "\nERROR!  sizeof(I830DRIRec) does not match passed size from device driver\n");
00276       return GL_FALSE;
00277    }
00278 
00279    /* Allocate the private area */
00280    intelScreen = CALLOC_STRUCT(intel_screen);
00281    if (!intelScreen)
00282       return GL_FALSE;
00283 
00284    /* parse information in __driConfigOptions */
00285    driParseOptionInfo(&intelScreen->optionCache,
00286                       __driConfigOptions, __driNConfigOptions);
00287 
00288    sPriv->private = (void *) intelScreen;
00289 
00290    intelScreen->sarea = (drmI830Sarea *) (((GLubyte *) sPriv->pSAREA) +
00291                                           gDRIPriv->sarea_priv_offset);
00292    intelScreen->deviceID = gDRIPriv->deviceID;
00293    intelScreen->front.cpp = gDRIPriv->cpp;
00294    intelScreen->drmMinor = sPriv->drmMinor;
00295 
00296    assert(gDRIPriv->bitsPerPixel == 16 ||
00297           gDRIPriv->bitsPerPixel == 32);
00298 
00299    intelUpdateScreenRotation(sPriv, intelScreen->sarea);
00300 
00301    if (0)
00302       intelPrintDRIInfo(intelScreen, sPriv, gDRIPriv);
00303 
00304    if (glx_enable_extension != NULL) {
00305       (*glx_enable_extension) (psc, "GLX_SGI_swap_control");
00306       (*glx_enable_extension) (psc, "GLX_SGI_video_sync");
00307       (*glx_enable_extension) (psc, "GLX_MESA_swap_control");
00308       (*glx_enable_extension) (psc, "GLX_MESA_swap_frame_usage");
00309       (*glx_enable_extension) (psc, "GLX_SGI_make_current_read");
00310    }
00311 
00312    intelScreen->base.base.flush_frontbuffer = intel_flush_frontbuffer;
00313    intelScreen->base.base.get_name = intel_get_name;
00314    intel_be_init_device(&intelScreen->base, sPriv->fd, intelScreen->deviceID);
00315 
00316    return GL_TRUE;
00317 }

static void intelPrintDRIInfo ( struct intel_screen intelScreen,
__DRIscreenPrivate *  sPriv,
I830DRIPtr  gDRIPriv 
) [static]

Definition at line 120 of file intel_screen.c.

References intel_screen::front, _I830DRIRec::mem, intel_screen::offset, intel_screen::pitch, and intel_screen::size.

00122 {
00123    fprintf(stderr, "*** Front size:   0x%x  offset: 0x%x  pitch: %d\n",
00124            intelScreen->front.size, intelScreen->front.offset,
00125            intelScreen->front.pitch);
00126    fprintf(stderr, "*** Memory : 0x%x\n", gDRIPriv->mem);
00127 }

static void intelSetTexOffset ( __DRIcontext *  pDRICtx,
int  texname,
unsigned long long  offset,
int  depth,
uint  pitch 
) [static]

Definition at line 411 of file intel_screen.c.

References st_context::pipe, st_texture_object::pt, intel_context::st, and st_texture_object().

00413 {
00414    abort();
00415 #if 0
00416    struct intel_context *intel = (struct intel_context*)
00417       ((__DRIcontextPrivate*)pDRICtx->private)->driverPrivate;
00418    struct gl_texture_object *tObj = _mesa_lookup_texture(&intel->ctx, texname);
00419    struct st_texture_object *stObj = st_texture_object(tObj);
00420 
00421    if (!stObj)
00422       return;
00423 
00424    if (stObj->pt)
00425       st->pipe->texture_release(intel->st->pipe, &stObj->pt);
00426 
00427    stObj->imageOverride = GL_TRUE;
00428    stObj->depthOverride = depth;
00429    stObj->pitchOverride = pitch;
00430 
00431    if (offset)
00432       stObj->textureOffset = offset;
00433 #endif
00434 }

void intelUpdateScreenRotation ( __DRIscreenPrivate *  sPriv,
drmI830Sarea sarea 
)

Use the information in the sarea to update the screen parameters related to screen rotation.

Needs to be called locked.

Definition at line 164 of file intel_screen.c.

References assert, intel_be_device::base, intel_screen::base, intel_screen::buffer, intel_screen::cpp, driBOUnReference(), driDeleteBuffers(), driGenBuffers(), intel_screen::front, drmI830Sarea::front_bo_handle, drmI830Sarea::front_handle, drmI830Sarea::front_offset, drmI830Sarea::front_size, intel_screen::handle, drmI830Sarea::height, intel_screen::height, intel_screen(), intelCreateSurface(), intel_screen::map, intel_screen::offset, pipe_surface_reference(), pipe_texture_reference(), drmI830Sarea::pitch, intel_screen::pitch, intel_screen::size, intel_be_device::staticPool, intel_screen::surface, intel_screen::texture, drmI830Sarea::width, and intel_screen::width.

00165 {
00166    struct intel_screen *intelScreen = intel_screen(sPriv);
00167 
00168    if (intelScreen->front.map) {
00169       drmUnmap(intelScreen->front.map, intelScreen->front.size);
00170       intelScreen->front.map = NULL;
00171    }
00172 
00173    if (intelScreen->front.buffer)
00174       driDeleteBuffers(1, &intelScreen->front.buffer);
00175 
00176    intelScreen->front.width = sarea->width;
00177    intelScreen->front.height = sarea->height;
00178    intelScreen->front.offset = sarea->front_offset;
00179    intelScreen->front.pitch = sarea->pitch * intelScreen->front.cpp;
00180    intelScreen->front.size = sarea->front_size;
00181    intelScreen->front.handle = sarea->front_handle;
00182 
00183    assert( sarea->front_size >=
00184            intelScreen->front.pitch * intelScreen->front.height );
00185 
00186 #if 0 /* JB not important */
00187    if (!sarea->front_handle)
00188       return;
00189 
00190    if (drmMap(sPriv->fd,
00191               sarea->front_handle,
00192               intelScreen->front.size,
00193               (drmAddress *) & intelScreen->front.map) != 0) {
00194       fprintf(stderr, "drmMap(frontbuffer) failed!\n");
00195       return;
00196    }
00197 #endif
00198 
00199 #if 0 /* JB */
00200    if (intelScreen->staticPool) {
00201       driGenBuffers(intelScreen->staticPool, "static region", 1,
00202                     &intelScreen->front.buffer, 64,
00203                     DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_NO_MOVE |
00204                     DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE, 0);
00205 
00206       driBOSetStatic(intelScreen->front.buffer,
00207                      intelScreen->front.offset,
00208                      intelScreen->front.pitch * intelScreen->front.height,
00209                      intelScreen->front.map, 0);
00210    }
00211 #else
00212    if (intelScreen->base.staticPool) {
00213       if (intelScreen->front.buffer) {
00214          driBOUnReference(intelScreen->front.buffer);
00215          pipe_surface_reference(&intelScreen->front.surface, NULL);
00216          pipe_texture_reference(&intelScreen->front.texture, NULL);
00217       }
00218       intelCreateSurface(intelScreen, &intelScreen->base.base, sarea->front_bo_handle);
00219    }
00220 #endif
00221 }


Variable Documentation

PUBLIC const char __driConfigOptions[]

Initial value:

   DRI_CONF_BEGIN DRI_CONF_SECTION_PERFORMANCE


   DRI_CONF_SECTION_END DRI_CONF_SECTION_QUALITY


   DRI_CONF_SECTION_END DRI_CONF_END

Definition at line 99 of file intel_screen.c.

const uint __driNConfigOptions = 3

Definition at line 108 of file intel_screen.c.

struct dri_extension card_extensions[]

Extension strings exported by the intel driver.

Note:
It appears that ARB_texture_env_crossbar has "disappeared" compared to the old i830-specific driver.

Definition at line 78 of file intel_context.c.

struct __DriverAPIRec intelAPI [static]

Initial value:

 {
   .InitDriver = intelInitDriver,
   .DestroyScreen = intelDestroyScreen,
   .CreateContext = intelCreateContext,
   .DestroyContext = intelDestroyContext,
   .CreateBuffer = intelCreateBuffer,
   .DestroyBuffer = intelDestroyBuffer,
   .SwapBuffers = intelSwapBuffers,
   .MakeCurrent = intelMakeCurrent,
   .UnbindContext = intelUnbindContext,
   .GetSwapInfo = intelGetSwapInfo,
   .GetMSC = driGetMSC32,
   .WaitForMSC = driWaitForMSC32,
   .WaitForSBC = NULL,
   .SwapBuffersMSC = NULL,
   .CopySubBuffer = intelCopySubBuffer,
   .setTexOffset = intelSetTexOffset,
}

Definition at line 437 of file intel_screen.c.


Generated on Tue Sep 29 06:25:46 2009 for Gallium3D by  doxygen 1.5.4