forked from KolibriOS/kolibrios
intel-2D: sna vsync api
git-svn-id: svn://kolibrios.org@4377 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
d655103a9d
commit
d5c80240f4
@ -69,7 +69,7 @@ endif
|
||||
|
||||
# targets
|
||||
|
||||
all:$(LIBRARY).dll intel-sna.drv intel-uxa.drv
|
||||
all:$(LIBRARY).dll intel-sna.drv
|
||||
uxa:$(LIBRARY).dll
|
||||
ebox:$(LIBRARY).dll
|
||||
|
||||
|
17
contrib/sdk/sources/Intel-2D/pixdriver.h
Normal file
17
contrib/sdk/sources/Intel-2D/pixdriver.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef __PIXDRIVER_H__
|
||||
#define __PIXDRIVER_H__
|
||||
|
||||
struct pix_driver
|
||||
{
|
||||
char *name;
|
||||
|
||||
int (*create_bitmap)(bitmap_t * bitmap);
|
||||
int (*destroy_bitmap)(bitmap_t * bitmap);
|
||||
int (*lock_bitmap)(bitmap_t * bitmap);
|
||||
int (*blit)(bitmap_t * bitmap, int scale, int vsync,
|
||||
int dst_x, int dst_y, int w, int h, int src_x, int src_y);
|
||||
int (*resize_bitmap)(bitmap_t * bitmap);
|
||||
void (*fini)(void);
|
||||
};
|
||||
|
||||
#endif
|
@ -5,22 +5,12 @@
|
||||
#include <malloc.h>
|
||||
#include <stdbool.h>
|
||||
#include <pixlib2.h>
|
||||
#include "pixdriver.h"
|
||||
|
||||
#include <kos32sys.h>
|
||||
|
||||
void* load_library(const char *name);
|
||||
|
||||
struct pix_driver
|
||||
{
|
||||
char *name;
|
||||
|
||||
int (*create_bitmap)(bitmap_t * bitmap);
|
||||
int (*destroy_bitmap)(bitmap_t * bitmap);
|
||||
int (*lock_bitmap)(bitmap_t * bitmap);
|
||||
int (*blit)(bitmap_t * bitmap, bool scale, int dst_x, int dst_y,
|
||||
int w, int h, int src_x, int src_y);
|
||||
int (*resize_bitmap)(bitmap_t * bitmap);
|
||||
void (*fini)(void);
|
||||
};
|
||||
|
||||
#define DISPLAY_VERSION 0x0200 /* 2.00 */
|
||||
|
||||
@ -202,7 +192,7 @@ int blit_bitmap(bitmap_t * bitmap, int dst_x, int dst_y,
|
||||
surface_t *sf = to_surface(bitmap);
|
||||
|
||||
if (sf->flags & hw_caps & HW_BIT_BLIT)
|
||||
return pix_driver.blit(bitmap, false, dst_x, dst_y, w, h, src_x, src_y);
|
||||
return pix_driver.blit(bitmap, 0, 0, dst_x, dst_y, w, h, src_x, src_y);
|
||||
|
||||
bc.dstx = dst_x;
|
||||
bc.dsty = dst_y;
|
||||
@ -233,7 +223,7 @@ int fplay_blit_bitmap(bitmap_t * bitmap, int dst_x, int dst_y, int w, int h)
|
||||
surface_t *sf = to_surface(bitmap);
|
||||
|
||||
if (sf->flags & hw_caps & HW_TEX_BLIT)
|
||||
return pix_driver.blit(bitmap, true, dst_x, dst_y, w, h, 0, 0);
|
||||
return pix_driver.blit(bitmap, 1, 1, dst_x, dst_y, w, h, 0, 0);
|
||||
|
||||
bc.dstx = dst_x;
|
||||
bc.dsty = dst_y;
|
||||
|
@ -46,6 +46,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "sna_reg.h"
|
||||
|
||||
#include <pixlib2.h>
|
||||
#include "../pixdriver.h"
|
||||
|
||||
#include <kos32sys.h>
|
||||
|
||||
#define to_surface(x) (surface_t*)((x)->handle)
|
||||
@ -57,20 +59,6 @@ typedef struct {
|
||||
int b;
|
||||
} rect_t;
|
||||
|
||||
struct pix_driver
|
||||
{
|
||||
char *name;
|
||||
|
||||
int (*create_bitmap)(bitmap_t * bitmap);
|
||||
int (*destroy_bitmap)(bitmap_t * bitmap);
|
||||
int (*lock_bitmap)(bitmap_t * bitmap);
|
||||
int (*blit)(bitmap_t * bitmap, bool scale, int dst_x, int dst_y,
|
||||
int w, int h, int src_x, int src_y);
|
||||
int (*resize_bitmap)(bitmap_t * bitmap);
|
||||
void (*fini)(void);
|
||||
};
|
||||
|
||||
|
||||
static struct sna_fb sna_fb;
|
||||
static int tls_mask;
|
||||
|
||||
@ -691,7 +679,7 @@ sna_wait_for_scanline(struct sna *sna,
|
||||
|
||||
full_height = y1 == 0 && y2 == crtc->b - crtc->t;
|
||||
|
||||
pipe = 0;
|
||||
pipe = sna_fb.pipe;
|
||||
DBG(("%s: pipe=%d, y1=%d, y2=%d, full_height?=%d\n",
|
||||
__FUNCTION__, pipe, y1, y2, full_height));
|
||||
|
||||
@ -1092,8 +1080,8 @@ err_1:
|
||||
|
||||
|
||||
|
||||
int sna_blit_tex(bitmap_t *bitmap, bool scale, int dst_x, int dst_y,
|
||||
int w, int h, int src_x, int src_y)
|
||||
int sna_blit_tex(bitmap_t *bitmap, int scale, int vsync,
|
||||
int dst_x, int dst_y,int w, int h, int src_x, int src_y)
|
||||
|
||||
{
|
||||
surface_t *sf = to_surface(bitmap);
|
||||
@ -1165,7 +1153,7 @@ int sna_blit_tex(bitmap_t *bitmap, bool scale, int dst_x, int dst_y,
|
||||
|
||||
__lock_acquire_recursive(__sna_lock);
|
||||
|
||||
#if 0
|
||||
if(vsync)
|
||||
{
|
||||
rect_t crtc, clip;
|
||||
|
||||
@ -1182,7 +1170,6 @@ int sna_blit_tex(bitmap_t *bitmap, bool scale, int dst_x, int dst_y,
|
||||
kgem_set_mode(&sna_device->kgem, KGEM_RENDER, sna_fb.fb_bo);
|
||||
sna_wait_for_scanline(sna_device, &crtc, &clip);
|
||||
}
|
||||
#endif
|
||||
|
||||
if( sna_device->render.blit_tex(sna_device, PictOpSrc,scale,
|
||||
&src, src_bo,
|
||||
@ -1223,8 +1210,6 @@ int sna_blit_tex(bitmap_t *bitmap, bool scale, int dst_x, int dst_y,
|
||||
|
||||
static void sna_fini()
|
||||
{
|
||||
ENTER();
|
||||
|
||||
if( sna_device )
|
||||
{
|
||||
struct kgem_bo *mask;
|
||||
@ -1242,7 +1227,6 @@ static void sna_fini()
|
||||
sna_device = NULL;
|
||||
__lock_release_recursive(__sna_lock);
|
||||
};
|
||||
LEAVE();
|
||||
}
|
||||
|
||||
uint32_t DrvInit(uint32_t service, struct pix_driver *driver)
|
||||
|
@ -391,6 +391,8 @@ struct sna_fb
|
||||
uint32_t height;
|
||||
uint32_t pitch;
|
||||
uint32_t tiling;
|
||||
uint32_t crtc;
|
||||
uint32_t pipe;
|
||||
|
||||
struct kgem_bo *fb_bo;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user