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
|
# targets
|
||||||
|
|
||||||
all:$(LIBRARY).dll intel-sna.drv intel-uxa.drv
|
all:$(LIBRARY).dll intel-sna.drv
|
||||||
uxa:$(LIBRARY).dll
|
uxa:$(LIBRARY).dll
|
||||||
ebox:$(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 <malloc.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <pixlib2.h>
|
#include <pixlib2.h>
|
||||||
|
#include "pixdriver.h"
|
||||||
|
|
||||||
#include <kos32sys.h>
|
#include <kos32sys.h>
|
||||||
|
|
||||||
void* load_library(const char *name);
|
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 */
|
#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);
|
surface_t *sf = to_surface(bitmap);
|
||||||
|
|
||||||
if (sf->flags & hw_caps & HW_BIT_BLIT)
|
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.dstx = dst_x;
|
||||||
bc.dsty = dst_y;
|
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);
|
surface_t *sf = to_surface(bitmap);
|
||||||
|
|
||||||
if (sf->flags & hw_caps & HW_TEX_BLIT)
|
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.dstx = dst_x;
|
||||||
bc.dsty = dst_y;
|
bc.dsty = dst_y;
|
||||||
|
@ -46,6 +46,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
#include "sna_reg.h"
|
#include "sna_reg.h"
|
||||||
|
|
||||||
#include <pixlib2.h>
|
#include <pixlib2.h>
|
||||||
|
#include "../pixdriver.h"
|
||||||
|
|
||||||
#include <kos32sys.h>
|
#include <kos32sys.h>
|
||||||
|
|
||||||
#define to_surface(x) (surface_t*)((x)->handle)
|
#define to_surface(x) (surface_t*)((x)->handle)
|
||||||
@ -57,20 +59,6 @@ typedef struct {
|
|||||||
int b;
|
int b;
|
||||||
} rect_t;
|
} 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 struct sna_fb sna_fb;
|
||||||
static int tls_mask;
|
static int tls_mask;
|
||||||
|
|
||||||
@ -691,7 +679,7 @@ sna_wait_for_scanline(struct sna *sna,
|
|||||||
|
|
||||||
full_height = y1 == 0 && y2 == crtc->b - crtc->t;
|
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",
|
DBG(("%s: pipe=%d, y1=%d, y2=%d, full_height?=%d\n",
|
||||||
__FUNCTION__, pipe, y1, y2, full_height));
|
__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 sna_blit_tex(bitmap_t *bitmap, int scale, int vsync,
|
||||||
int w, int h, int src_x, int src_y)
|
int dst_x, int dst_y,int w, int h, int src_x, int src_y)
|
||||||
|
|
||||||
{
|
{
|
||||||
surface_t *sf = to_surface(bitmap);
|
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);
|
__lock_acquire_recursive(__sna_lock);
|
||||||
|
|
||||||
#if 0
|
if(vsync)
|
||||||
{
|
{
|
||||||
rect_t crtc, clip;
|
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);
|
kgem_set_mode(&sna_device->kgem, KGEM_RENDER, sna_fb.fb_bo);
|
||||||
sna_wait_for_scanline(sna_device, &crtc, &clip);
|
sna_wait_for_scanline(sna_device, &crtc, &clip);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if( sna_device->render.blit_tex(sna_device, PictOpSrc,scale,
|
if( sna_device->render.blit_tex(sna_device, PictOpSrc,scale,
|
||||||
&src, src_bo,
|
&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()
|
static void sna_fini()
|
||||||
{
|
{
|
||||||
ENTER();
|
|
||||||
|
|
||||||
if( sna_device )
|
if( sna_device )
|
||||||
{
|
{
|
||||||
struct kgem_bo *mask;
|
struct kgem_bo *mask;
|
||||||
@ -1242,7 +1227,6 @@ static void sna_fini()
|
|||||||
sna_device = NULL;
|
sna_device = NULL;
|
||||||
__lock_release_recursive(__sna_lock);
|
__lock_release_recursive(__sna_lock);
|
||||||
};
|
};
|
||||||
LEAVE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t DrvInit(uint32_t service, struct pix_driver *driver)
|
uint32_t DrvInit(uint32_t service, struct pix_driver *driver)
|
||||||
|
@ -391,6 +391,8 @@ struct sna_fb
|
|||||||
uint32_t height;
|
uint32_t height;
|
||||||
uint32_t pitch;
|
uint32_t pitch;
|
||||||
uint32_t tiling;
|
uint32_t tiling;
|
||||||
|
uint32_t crtc;
|
||||||
|
uint32_t pipe;
|
||||||
|
|
||||||
struct kgem_bo *fb_bo;
|
struct kgem_bo *fb_bo;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user