intel_context.c File Reference

Include dependency graph for intel_context.c:

Go to the source code of this file.

Defines

#define need_GL_ARB_multisample
#define need_GL_ARB_point_parameters
#define need_GL_ARB_texture_compression
#define need_GL_ARB_vertex_buffer_object
#define need_GL_ARB_vertex_program
#define need_GL_ARB_window_pos
#define need_GL_EXT_blend_color
#define need_GL_EXT_blend_equation_separate
#define need_GL_EXT_blend_func_separate
#define need_GL_EXT_blend_minmax
#define need_GL_EXT_cull_vertex
#define need_GL_EXT_fog_coord
#define need_GL_EXT_framebuffer_object
#define need_GL_EXT_multi_draw_arrays
#define need_GL_EXT_secondary_color
#define need_GL_NV_vertex_program

Functions

static void intel_lock_hardware (struct intel_be_context *context)
static void intel_unlock_hardware (struct intel_be_context *context)
static boolean intel_locked_hardware (struct intel_be_context *context)
int intel_create_context (struct egl_drm_context *egl_context, const __GLcontextModes *visual, void *sharedContextPrivate)
int intel_destroy_context (struct egl_drm_context *egl_context)
void intel_make_current (struct egl_drm_context *context, struct egl_drm_drawable *draw, struct egl_drm_drawable *read)
void intel_bind_frontbuffer (struct egl_drm_drawable *draw, struct egl_drm_frontbuffer *front)

Variables

struct dri_extension card_extensions []
 Extension strings exported by the intel driver.


Define Documentation

#define need_GL_ARB_multisample

Definition at line 45 of file intel_context.c.

#define need_GL_ARB_point_parameters

Definition at line 46 of file intel_context.c.

#define need_GL_ARB_texture_compression

Definition at line 47 of file intel_context.c.

#define need_GL_ARB_vertex_buffer_object

Definition at line 48 of file intel_context.c.

#define need_GL_ARB_vertex_program

Definition at line 49 of file intel_context.c.

#define need_GL_ARB_window_pos

Definition at line 50 of file intel_context.c.

#define need_GL_EXT_blend_color

Definition at line 51 of file intel_context.c.

#define need_GL_EXT_blend_equation_separate

Definition at line 52 of file intel_context.c.

#define need_GL_EXT_blend_func_separate

Definition at line 53 of file intel_context.c.

#define need_GL_EXT_blend_minmax

Definition at line 54 of file intel_context.c.

#define need_GL_EXT_cull_vertex

Definition at line 55 of file intel_context.c.

#define need_GL_EXT_fog_coord

Definition at line 56 of file intel_context.c.

#define need_GL_EXT_framebuffer_object

Definition at line 57 of file intel_context.c.

#define need_GL_EXT_multi_draw_arrays

Definition at line 58 of file intel_context.c.

#define need_GL_EXT_secondary_color

Definition at line 59 of file intel_context.c.

#define need_GL_NV_vertex_program

Definition at line 60 of file intel_context.c.


Function Documentation

void intel_bind_frontbuffer ( struct egl_drm_drawable draw,
struct egl_drm_frontbuffer front 
)

Definition at line 221 of file intel_context.c.

References intel_device::base, egl_drm_drawable::device, intel_device::device, driBOSetReferenced(), driBOUnReference(), driGenBuffers(), egl_drm_drawable::h, egl_drm_frontbuffer::handle, egl_drm_drawable::priv, egl_drm_device::priv, st_resize_framebuffer(), intel_be_device::staticPool, and egl_drm_drawable::w.

00222 {
00223         struct intel_device *device = (struct intel_device *)draw->device->priv;
00224         struct intel_framebuffer *draw_fb = (struct intel_framebuffer *)draw->priv;
00225 
00226         if (draw_fb->front_buffer)
00227                 driBOUnReference(draw_fb->front_buffer);
00228 
00229         draw_fb->front_buffer = NULL;
00230         draw_fb->front = NULL;
00231 
00232         /* to unbind just call this function with front == NULL */
00233         if (!front)
00234                 return;
00235 
00236         draw_fb->front = front;
00237 
00238         driGenBuffers(device->base.staticPool, "front", 1, &draw_fb->front_buffer, 0, 0, 0);
00239         driBOSetReferenced(draw_fb->front_buffer, front->handle);
00240 
00241         st_resize_framebuffer(draw_fb->stfb, draw->w, draw->h);
00242 }

int intel_create_context ( struct egl_drm_context egl_context,
const __GLcontextModes *  visual,
void *  sharedContextPrivate 
)

Definition at line 147 of file intel_context.c.

References intel_be_context::base, intel_be_device::base, intel_device::base, intel_context::base, CALLOC_STRUCT, egl_drm_context::device, intel_device::device, intel_device::dummy, intel_context::egl_context, intel_context::egl_device, intel_be_context::hardware_lock, intel_be_context::hardware_locked, intel_be_context::hardware_unlock, i915_create_context(), intel_be_init_context(), intel_create_softpipe(), intel_context::intel_device, intel_lock_hardware(), intel_locked_hardware(), intel_unlock_hardware(), intel_device::pipe, egl_drm_context::priv, egl_drm_device::priv, intel_context::st, st_create_context(), and TRUE.

00148 {
00149         struct intel_context *intel = CALLOC_STRUCT(intel_context);
00150         struct intel_device *device = (struct intel_device *)egl_context->device->priv;
00151         struct pipe_context *pipe;
00152         struct st_context *st_share = NULL;
00153 
00154         egl_context->priv = intel;
00155 
00156         intel->intel_device = device;
00157         intel->egl_context = egl_context;
00158         intel->egl_device = egl_context->device;
00159 
00160         intel->base.hardware_lock = intel_lock_hardware;
00161         intel->base.hardware_unlock = intel_unlock_hardware;
00162         intel->base.hardware_locked = intel_locked_hardware;
00163 
00164         intel_be_init_context(&intel->base, &device->base);
00165 
00166 #if 0
00167         pipe = intel_create_softpipe(intel, screen->winsys);
00168 #else
00169         pipe = i915_create_context(device->pipe, &device->base.base, &intel->base.base);
00170 #endif
00171 
00172         pipe->priv = intel;
00173 
00174         intel->st = st_create_context(pipe, visual, st_share);
00175 
00176         device->dummy = intel;
00177 
00178         return TRUE;
00179 }

int intel_destroy_context ( struct egl_drm_context egl_context  ) 

Definition at line 182 of file intel_context.c.

References intel_context::base, intel_device::dummy, intel_be_destroy_context(), intel_context::intel_device, egl_drm_context::priv, intel_context::st, st_destroy_context(), and TRUE.

00183 {
00184         struct intel_context *intel = egl_context->priv;
00185 
00186         if (intel->intel_device->dummy == intel)
00187                 intel->intel_device->dummy = NULL;
00188 
00189         st_destroy_context(intel->st);
00190         intel_be_destroy_context(&intel->base);
00191         free(intel);
00192         return TRUE;
00193 }

static void intel_lock_hardware ( struct intel_be_context context  )  [static]

Definition at line 123 of file intel_context.c.

00124 {
00125         (void)context;
00126 }

static boolean intel_locked_hardware ( struct intel_be_context context  )  [static]

Definition at line 135 of file intel_context.c.

References FALSE.

00136 {
00137         (void)context;
00138         return FALSE;
00139 }

void intel_make_current ( struct egl_drm_context context,
struct egl_drm_drawable draw,
struct egl_drm_drawable read 
)

Definition at line 196 of file intel_context.c.

References assert, intel_context::egl_drawable, egl_drm_drawable::h, egl_drm_drawable::priv, egl_drm_context::priv, intel_context::st, st_make_current(), st_resize_framebuffer(), intel_framebuffer::stfb, and egl_drm_drawable::w.

00197 {
00198         if (context) {
00199                 struct intel_context *intel = (struct intel_context *)context->priv;
00200                 struct intel_framebuffer *draw_fb = (struct intel_framebuffer *)draw->priv;
00201                 struct intel_framebuffer *read_fb = (struct intel_framebuffer *)read->priv;
00202 
00203                 assert(draw_fb->stfb);
00204                 assert(read_fb->stfb);
00205 
00206                 st_make_current(intel->st, draw_fb->stfb, read_fb->stfb);
00207 
00208                 intel->egl_drawable = draw;
00209 
00210                 st_resize_framebuffer(draw_fb->stfb, draw->w, draw->h);
00211 
00212                 if (draw != read)
00213                         st_resize_framebuffer(read_fb->stfb, read->w, read->h);
00214 
00215         } else {
00216                 st_make_current(NULL, NULL, NULL);
00217         }
00218 }

static void intel_unlock_hardware ( struct intel_be_context context  )  [static]

Definition at line 129 of file intel_context.c.

00130 {
00131         (void)context;
00132 }


Variable Documentation

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 71 of file intel_context.c.


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