static void
dri_sw_displaytarget_unmap(struct sw_winsys *ws,
                           struct sw_displaytarget *dt)
{
   struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);
   dri_sw_dt->mapped = NULL;
}
Beispiel #2
0
static void
dri_sw_displaytarget_display(struct sw_winsys *ws,
                             struct sw_displaytarget *dt,
                             void *context_private,
                             struct pipe_box *box)
{
   struct dri_sw_winsys *dri_sw_ws = dri_sw_winsys(ws);
   struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);
   struct dri_drawable *dri_drawable = (struct dri_drawable *)context_private;
   unsigned width, height;
   unsigned blsize = util_format_get_blocksize(dri_sw_dt->format);

   /* Set the width to 'stride / cpp'.
    *
    * PutImage correctly clips to the width of the dst drawable.
    */
   width = dri_sw_dt->stride / blsize;

   height = dri_sw_dt->height;

   if (box) {
       void *data;
       data = dri_sw_dt->data + (dri_sw_dt->stride * box->y) + box->x * blsize;
       dri_sw_ws->lf->put_image2(dri_drawable, data,
                                 box->x, box->y, box->width, box->height, dri_sw_dt->stride);
   } else {
       dri_sw_ws->lf->put_image(dri_drawable, dri_sw_dt->data, width, height);
   }
}
static void *
dri_sw_displaytarget_map(struct sw_winsys *ws,
                         struct sw_displaytarget *dt,
                         unsigned flags)
{
   struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);
   dri_sw_dt->mapped = dri_sw_dt->data;
   return dri_sw_dt->mapped;
}
Beispiel #4
0
static void
dri_sw_displaytarget_destroy(struct sw_winsys *ws,
                             struct sw_displaytarget *dt)
{
   struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);

   FREE(dri_sw_dt->data);

   FREE(dri_sw_dt);
}
static void
dri_sw_displaytarget_display(struct sw_winsys *ws,
                             struct sw_displaytarget *dt,
                             void *context_private)
{
   struct dri_sw_winsys *dri_sw_ws = dri_sw_winsys(ws);
   struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);
   struct dri_drawable *dri_drawable = (struct dri_drawable *)context_private;
   unsigned width, height;

   /* Set the width to 'stride / cpp'.
    *
    * PutImage correctly clips to the width of the dst drawable.
    */
   width = dri_sw_dt->stride / util_format_get_blocksize(dri_sw_dt->format);

   height = dri_sw_dt->height;

   dri_sw_ws->lf->put_image(dri_drawable, dri_sw_dt->data, width, height);
}