diff options
Diffstat (limited to 'src/gallium')
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_context.c | 2 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_drawable.c | 6 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_drawable.h | 7 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_st_api.c | 34 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_st_api.h | 8 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/drm/dri1.c | 4 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/drm/dri2.c | 4 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/sw/drisw.c | 2 | 
8 files changed, 26 insertions, 41 deletions
| diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 97e3b0628f..ba9fe62125 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -165,7 +165,7 @@ dri_make_current(__DRIcontext * cPriv,           read->texture_stamp = driReadPriv->lastStamp - 1;        } -      stapi->make_current(stapi, ctx->st, draw->stfb, read->stfb); +      stapi->make_current(stapi, ctx->st, &draw->base, &read->base);     }     else {        stapi->make_current(stapi, NULL, NULL, NULL); diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c index 6b551ea3f9..a61e7e1b1b 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.c +++ b/src/gallium/state_trackers/dri/common/dri_drawable.c @@ -58,9 +58,7 @@ dri_create_buffer(__DRIscreen * sPriv,        goto fail;     dri_fill_st_visual(&drawable->stvis, screen, visual); -   drawable->stfb = dri_create_st_framebuffer(drawable); -   if (drawable->stfb == NULL) -      goto fail; +   dri_init_st_framebuffer(drawable);     drawable->sPriv = sPriv;     drawable->dPriv = dPriv; @@ -83,7 +81,7 @@ dri_destroy_buffer(__DRIdrawable * dPriv)     dri1_destroy_pipe_surface(drawable); -   dri_destroy_st_framebuffer(drawable->stfb); +   dri_close_st_framebuffer(drawable);     drawable->desired_fences = 0; diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h index dad218bde2..6c54a6953b 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.h +++ b/src/gallium/state_trackers/dri/common/dri_drawable.h @@ -42,14 +42,13 @@ struct dri_context;  struct dri_drawable  { +   struct st_framebuffer_iface base; +   struct st_visual stvis; +     /* dri */     __DRIdrawable *dPriv;     __DRIscreen *sPriv; -   /* gallium */ -   struct st_framebuffer_iface *stfb; -   struct st_visual stvis; -     __DRIbuffer old[8];     unsigned old_num;     unsigned old_w; diff --git a/src/gallium/state_trackers/dri/common/dri_st_api.c b/src/gallium/state_trackers/dri/common/dri_st_api.c index 6c8a7e82ab..42e0ba020a 100644 --- a/src/gallium/state_trackers/dri/common/dri_st_api.c +++ b/src/gallium/state_trackers/dri/common/dri_st_api.c @@ -106,38 +106,27 @@ dri_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi,  }  /** - * Create a framebuffer from the given drawable. + * Init a framebuffer from the given drawable.   */ -struct st_framebuffer_iface * -dri_create_st_framebuffer(struct dri_drawable *drawable) +void +dri_init_st_framebuffer(struct dri_drawable *drawable)  { -   struct st_framebuffer_iface *stfbi; - -   stfbi = CALLOC_STRUCT(st_framebuffer_iface); -   if (stfbi) { -      stfbi->visual = &drawable->stvis; -      stfbi->flush_front = dri_st_framebuffer_flush_front; -      stfbi->validate = dri_st_framebuffer_validate; -      stfbi->st_manager_private = (void *) drawable; -   } - -   return stfbi; +   drawable->base.visual = &drawable->stvis; +   drawable->base.flush_front = dri_st_framebuffer_flush_front; +   drawable->base.validate = dri_st_framebuffer_validate; +   drawable->base.st_manager_private = (void *) drawable;  }  /**   * Destroy a framebuffer.   */  void -dri_destroy_st_framebuffer(struct st_framebuffer_iface *stfbi) +dri_close_st_framebuffer(struct dri_drawable *drawable)  { -   struct dri_drawable *drawable = -      (struct dri_drawable *) stfbi->st_manager_private;     int i;     for (i = 0; i < ST_ATTACHMENT_COUNT; i++)        pipe_resource_reference(&drawable->textures[i], NULL); - -   FREE(stfbi);  }  /** @@ -145,11 +134,9 @@ dri_destroy_st_framebuffer(struct st_framebuffer_iface *stfbi)   * exist.   */  void -dri_st_framebuffer_validate_att(struct st_framebuffer_iface *stfbi, +dri_st_framebuffer_validate_att(struct dri_drawable *drawable,                                  enum st_attachment_type statt)  { -   struct dri_drawable *drawable = -      (struct dri_drawable *) stfbi->st_manager_private;     enum st_attachment_type statts[ST_ATTACHMENT_COUNT];     unsigned i, count = 0; @@ -167,7 +154,8 @@ dri_st_framebuffer_validate_att(struct st_framebuffer_iface *stfbi,     drawable->texture_stamp = drawable->dPriv->lastStamp - 1; -   stfbi->validate(stfbi, statts, count, NULL); +   /* this calles into the manager */ +   drawable->base.validate(&drawable->base, statts, count, NULL);  }  static boolean diff --git a/src/gallium/state_trackers/dri/common/dri_st_api.h b/src/gallium/state_trackers/dri/common/dri_st_api.h index 0a0d43073c..8cb9fabd4e 100644 --- a/src/gallium/state_trackers/dri/common/dri_st_api.h +++ b/src/gallium/state_trackers/dri/common/dri_st_api.h @@ -49,14 +49,14 @@ dri_init_st_manager(struct dri_screen *screen);  void  dri_close_st_manager(struct dri_screen *screen); -struct st_framebuffer_iface * -dri_create_st_framebuffer(struct dri_drawable *drawable); +void +dri_init_st_framebuffer(struct dri_drawable *drawable);  void -dri_destroy_st_framebuffer(struct st_framebuffer_iface *stfbi); +dri_close_st_framebuffer(struct dri_drawable *drawable);  void -dri_st_framebuffer_validate_att(struct st_framebuffer_iface *stfbi, +dri_st_framebuffer_validate_att(struct dri_drawable *drawable,                                  enum st_attachment_type statt);  #endif /* _DRI_ST_API_H_ */ diff --git a/src/gallium/state_trackers/dri/drm/dri1.c b/src/gallium/state_trackers/dri/drm/dri1.c index 3f6f930ede..313195b096 100644 --- a/src/gallium/state_trackers/dri/drm/dri1.c +++ b/src/gallium/state_trackers/dri/drm/dri1.c @@ -104,13 +104,13 @@ dri1_propagate_drawable_change(struct dri_context *ctx)     if (dPriv && draw->texture_stamp != dPriv->lastStamp) {        ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);        flushed = TRUE; -      ctx->st->notify_invalid_framebuffer(ctx->st, draw->stfb); +      ctx->st->notify_invalid_framebuffer(ctx->st, &draw->base);     }     if (rPriv && dPriv != rPriv && read->texture_stamp != rPriv->lastStamp) {        if (!flushed)  	 ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL); -      ctx->st->notify_invalid_framebuffer(ctx->st, read->stfb); +      ctx->st->notify_invalid_framebuffer(ctx->st, &read->base);     }  } diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c index fa296a874a..f2d6fc1e5a 100644 --- a/src/gallium/state_trackers/dri/drm/dri2.c +++ b/src/gallium/state_trackers/dri/drm/dri2.c @@ -61,7 +61,7 @@ dri2_invalidate_drawable(__DRIdrawable *dPriv)     drawable->dPriv->lastStamp = *drawable->dPriv->pStamp;     if (ctx) -      ctx->st->notify_invalid_framebuffer(ctx->st, drawable->stfb); +      ctx->st->notify_invalid_framebuffer(ctx->st, &drawable->base);  }  static const __DRI2flushExtension dri2FlushExtension = { @@ -81,7 +81,7 @@ dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,     struct dri_drawable *drawable = dri_drawable(dPriv);     struct pipe_resource *pt; -   dri_st_framebuffer_validate_att(drawable->stfb, ST_ATTACHMENT_FRONT_LEFT); +   dri_st_framebuffer_validate_att(drawable, ST_ATTACHMENT_FRONT_LEFT);     pt = drawable->textures[ST_ATTACHMENT_FRONT_LEFT]; diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c index 9bd838e622..c3f88c936e 100644 --- a/src/gallium/state_trackers/dri/sw/drisw.c +++ b/src/gallium/state_trackers/dri/sw/drisw.c @@ -112,7 +112,7 @@ drisw_invalidate_drawable(__DRIdrawable *dPriv)     /* check if swapping currently bound buffer */     if (ctx && ctx->dPriv == dPriv) -      ctx->st->notify_invalid_framebuffer(ctx->st, drawable->stfb); +      ctx->st->notify_invalid_framebuffer(ctx->st, &drawable->base);  }  static INLINE void | 
