亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? radeon_exa.c

?? x.org上有關ati系列顯卡最新驅動
?? C
字號:
/* * Copyright 2005 Eric Anholt * Copyright 2005 Benjamin Herrenschmidt * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * Authors: *    Eric Anholt <anholt@FreeBSD.org> *    Zack Rusin <zrusin@trolltech.com> *    Benjamin Herrenschmidt <benh@kernel.crashing.org> * */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "radeon.h"#include "radeon_reg.h"#ifdef XF86DRI#include "radeon_dri.h"#endif#include "radeon_macros.h"#include "radeon_probe.h"#include "radeon_version.h"#ifdef XF86DRI#include "radeon_sarea.h"#endif#include "xf86.h"/***********************************************************************/#define RINFO_FROM_SCREEN(pScr) ScrnInfoPtr pScrn =  xf86Screens[pScr->myNum]; \    RADEONInfoPtr info   = RADEONPTR(pScrn)#define RADEON_TRACE_FALL 0#define RADEON_TRACE_DRAW 0#if RADEON_TRACE_FALL#define RADEON_FALLBACK(x)     		\do {					\	ErrorF("%s: ", __FUNCTION__);	\	ErrorF x;			\	return FALSE;			\} while (0)#else#define RADEON_FALLBACK(x) return FALSE#endif#if RADEON_TRACE_DRAW#define TRACE do { ErrorF("TRACE: %s\n", __FUNCTION__); } while(0)#else#define TRACE#endifstatic struct {    int rop;    int pattern;} RADEON_ROP[] = {    { RADEON_ROP3_ZERO, RADEON_ROP3_ZERO }, /* GXclear        */    { RADEON_ROP3_DSa,  RADEON_ROP3_DPa  }, /* Gxand          */    { RADEON_ROP3_SDna, RADEON_ROP3_PDna }, /* GXandReverse   */    { RADEON_ROP3_S,    RADEON_ROP3_P    }, /* GXcopy         */    { RADEON_ROP3_DSna, RADEON_ROP3_DPna }, /* GXandInverted  */    { RADEON_ROP3_D,    RADEON_ROP3_D    }, /* GXnoop         */    { RADEON_ROP3_DSx,  RADEON_ROP3_DPx  }, /* GXxor          */    { RADEON_ROP3_DSo,  RADEON_ROP3_DPo  }, /* GXor           */    { RADEON_ROP3_DSon, RADEON_ROP3_DPon }, /* GXnor          */    { RADEON_ROP3_DSxn, RADEON_ROP3_PDxn }, /* GXequiv        */    { RADEON_ROP3_Dn,   RADEON_ROP3_Dn   }, /* GXinvert       */    { RADEON_ROP3_SDno, RADEON_ROP3_PDno }, /* GXorReverse    */    { RADEON_ROP3_Sn,   RADEON_ROP3_Pn   }, /* GXcopyInverted */    { RADEON_ROP3_DSno, RADEON_ROP3_DPno }, /* GXorInverted   */    { RADEON_ROP3_DSan, RADEON_ROP3_DPan }, /* GXnand         */    { RADEON_ROP3_ONE,  RADEON_ROP3_ONE  }  /* GXset          */};/* Compute log base 2 of val. */static __inline__ intRADEONLog2(int val){	int bits;	for (bits = 0; val != 0; val >>= 1, ++bits)		;	return bits - 1;}static __inline__ CARD32 F_TO_DW(float val){    union {	float f;	CARD32 l;    } tmp;    tmp.f = val;    return tmp.l;}/* Assumes that depth 15 and 16 can be used as depth 16, which is okay since we * require src and dest datatypes to be equal. */static Bool RADEONGetDatatypeBpp(int bpp, CARD32 *type){	switch (bpp) {	case 8:		*type = ATI_DATATYPE_CI8;		return TRUE;	case 16:		*type = ATI_DATATYPE_RGB565;		return TRUE;	case 24:		*type = ATI_DATATYPE_CI8;		return TRUE;	case 32:		*type = ATI_DATATYPE_ARGB8888;		return TRUE;	default:		RADEON_FALLBACK(("Unsupported bpp: %d\n", bpp));		return FALSE;	}}static Bool RADEONPixmapIsColortiled(PixmapPtr pPix){    RINFO_FROM_SCREEN(pPix->drawable.pScreen);    /* This doesn't account for the back buffer, which we may want to wrap in     * a pixmap at some point for the purposes of DRI buffer moves.     */    if (info->tilingEnabled && exaGetPixmapOffset(pPix) == 0)	return TRUE;    else	return FALSE;}static Bool RADEONGetOffsetPitch(PixmapPtr pPix, int bpp, CARD32 *pitch_offset,				 unsigned int offset, unsigned int pitch){	RINFO_FROM_SCREEN(pPix->drawable.pScreen);	if (pitch % info->exa->pixmapPitchAlign != 0)		RADEON_FALLBACK(("Bad pitch 0x%08x\n", pitch));	if (offset % info->exa->pixmapOffsetAlign != 0)		RADEON_FALLBACK(("Bad offset 0x%08x\n", offset));	pitch = pitch >> 6;	*pitch_offset = (pitch << 22) | (offset >> 10);	/* If it's the front buffer, we've got to note that it's tiled? */	if (RADEONPixmapIsColortiled(pPix))		*pitch_offset |= RADEON_DST_TILE_MACRO;	return TRUE;}static Bool RADEONGetPixmapOffsetPitch(PixmapPtr pPix, CARD32 *pitch_offset){	RINFO_FROM_SCREEN(pPix->drawable.pScreen);	CARD32 pitch, offset;	int bpp;	bpp = pPix->drawable.bitsPerPixel;	if (bpp == 24)		bpp = 8;	offset = exaGetPixmapOffset(pPix) + info->fbLocation;	pitch = exaGetPixmapPitch(pPix);	return RADEONGetOffsetPitch(pPix, bpp, pitch_offset, offset, pitch);}#if X_BYTE_ORDER == X_BIG_ENDIANstatic unsigned long swapper_surfaces[3];static Bool RADEONPrepareAccess(PixmapPtr pPix, int index){    RINFO_FROM_SCREEN(pPix->drawable.pScreen);    unsigned char *RADEONMMIO = info->MMIO;    CARD32 offset = exaGetPixmapOffset(pPix);    int bpp, soff;    CARD32 size, flags;    /* Front buffer is always set with proper swappers */    if (offset == 0)        return TRUE;    /* If same bpp as front buffer, just do nothing as the main     * swappers will apply     */    bpp = pPix->drawable.bitsPerPixel;    if (bpp == pScrn->bitsPerPixel)        return TRUE;    /* We need to setup a separate swapper, let's request a     * surface. We need to align the size first     */    size = exaGetPixmapSize(pPix);    size = (size + RADEON_BUFFER_ALIGN) & ~(RADEON_BUFFER_ALIGN);    /* Set surface to tiling disabled with appropriate swapper */    switch (bpp) {    case 16:        flags = RADEON_SURF_AP0_SWP_16BPP | RADEON_SURF_AP1_SWP_16BPP;	break;    case 32:        flags = RADEON_SURF_AP0_SWP_32BPP | RADEON_SURF_AP1_SWP_32BPP;	break;    default:        flags = 0;    }#if defined(XF86DRI)    if (info->directRenderingEnabled && info->allowColorTiling) {	drmRadeonSurfaceAlloc drmsurfalloc;	int rc;        drmsurfalloc.address = offset;        drmsurfalloc.size = size;	drmsurfalloc.flags = flags | 1; /* bogus pitch to please DRM */        rc = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC,			     &drmsurfalloc, sizeof(drmsurfalloc));	if (rc < 0) {	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,		       "drm: could not allocate surface for access"		       " swapper, err: %d!\n", rc);	    return FALSE;	}	swapper_surfaces[index] = offset;	return TRUE;    }#endif    soff = (index + 1) * 0x10;    OUTREG(RADEON_SURFACE0_INFO + soff, flags);    OUTREG(RADEON_SURFACE0_LOWER_BOUND + soff, offset);    OUTREG(RADEON_SURFACE0_UPPER_BOUND + soff, offset + size - 1);    swapper_surfaces[index] = offset;    return TRUE;}static void RADEONFinishAccess(PixmapPtr pPix, int index){    RINFO_FROM_SCREEN(pPix->drawable.pScreen);    unsigned char *RADEONMMIO = info->MMIO;    CARD32 offset = exaGetPixmapOffset(pPix);    int soff;    /* Front buffer is always set with proper swappers */    if (offset == 0)        return;    if (swapper_surfaces[index] == 0)        return;#if defined(XF86DRI)    if (info->directRenderingEnabled && info->allowColorTiling) {	drmRadeonSurfaceFree drmsurffree;	drmsurffree.address = offset;	drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE,			&drmsurffree, sizeof(drmsurffree));	swapper_surfaces[index] = 0;	return;    }#endif    soff = (index + 1) * 0x10;    OUTREG(RADEON_SURFACE0_INFO + soff, 0);    OUTREG(RADEON_SURFACE0_LOWER_BOUND + soff, 0);    OUTREG(RADEON_SURFACE0_UPPER_BOUND + soff, 0);    swapper_surfaces[index] = 0;}#endif /* X_BYTE_ORDER == X_BIG_ENDIAN */#define RADEON_SWITCH_TO_2D()						\do {									\	CARD32 wait_until = 0;			\	BEGIN_ACCEL(1);							\	switch (info->engineMode) {					\	case EXA_ENGINEMODE_UNKNOWN:					\	    wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN;	\	case EXA_ENGINEMODE_3D:						\	    wait_until |= RADEON_WAIT_3D_IDLECLEAN;			\	case EXA_ENGINEMODE_2D:						\	    break;							\	}								\	OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until);			\	FINISH_ACCEL();							\        info->engineMode = EXA_ENGINEMODE_2D;                           \} while (0);#define RADEON_SWITCH_TO_3D()						\do {									\	CARD32 wait_until = 0;			\	BEGIN_ACCEL(1);							\	switch (info->engineMode) {					\	case EXA_ENGINEMODE_UNKNOWN:					\	    wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_3D_IDLECLEAN;	\	case EXA_ENGINEMODE_2D:						\	    wait_until |= RADEON_WAIT_2D_IDLECLEAN;			\	case EXA_ENGINEMODE_3D:						\	    break;							\	}								\	OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until);			\	FINISH_ACCEL();							\        info->engineMode = EXA_ENGINEMODE_3D;                           \} while (0);#define ENTER_DRAW(x) TRACE#define LEAVE_DRAW(x) TRACE/***********************************************************************/#define ACCEL_MMIO#define ACCEL_PREAMBLE()	unsigned char *RADEONMMIO = info->MMIO#define BEGIN_ACCEL(n)		RADEONWaitForFifo(pScrn, (n))#define OUT_ACCEL_REG(reg, val)	OUTREG(reg, val)#define OUT_ACCEL_REG_F(reg, val) OUTREG(reg, F_TO_DW(val))#define FINISH_ACCEL()#ifdef RENDER#include "radeon_exa_render.c"#endif#include "radeon_exa_funcs.c"#undef ACCEL_MMIO#undef ACCEL_PREAMBLE#undef BEGIN_ACCEL#undef OUT_ACCEL_REG#undef FINISH_ACCEL#ifdef XF86DRI#define ACCEL_CP#define ACCEL_PREAMBLE()						\    RING_LOCALS;							\    RADEONCP_REFRESH(pScrn, info)#define BEGIN_ACCEL(n)		BEGIN_RING(2*(n))#define OUT_ACCEL_REG(reg, val)	OUT_RING_REG(reg, val)#define FINISH_ACCEL()		ADVANCE_RING()#define OUT_RING_F(x) OUT_RING(F_TO_DW(x))#ifdef RENDER#include "radeon_exa_render.c"#endif#include "radeon_exa_funcs.c"#endif /* XF86DRI *//* * Once screen->off_screen_base is set, this function * allocates the remaining memory appropriately */Bool RADEONSetupMemEXA (ScreenPtr pScreen){    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];    RADEONInfoPtr info = RADEONPTR(pScrn);    int cpp = info->CurrentLayout.pixel_bytes;    int screen_size;    int byteStride = pScrn->displayWidth * cpp;    if (info->exa != NULL) {	xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map already initialized\n");	return FALSE;    }    info->exa = exaDriverAlloc();    if (info->exa == NULL)	return FALSE;    /* Need to adjust screen size for 16 line tiles, and then make it align to.     * the buffer alignment requirement.     */    if (info->allowColorTiling)	screen_size = RADEON_ALIGN(pScrn->virtualY, 16) * byteStride;    else	screen_size = pScrn->virtualY * byteStride;    info->exa->memoryBase = info->FB + pScrn->fbOffset;    info->exa->memorySize = info->FbMapSize - info->FbSecureSize;    info->exa->offScreenBase = screen_size;    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Allocating from a screen of %ld kb\n",	       info->exa->memorySize / 1024);    xf86DrvMsg(pScrn->scrnIndex, X_INFO,	       "Will use %d kb for front buffer at offset 0x%08x\n",	       screen_size / 1024, 0);    /* Reserve static area for hardware cursor */    if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) {	int cursor_size = 64 * 4 * 64;	info->cursor_offset = info->exa->offScreenBase;	xf86DrvMsg(pScrn->scrnIndex, X_INFO,		   "Will use %d kb for hardware cursor at offset 0x%08x\n",		   cursor_size / 1024, (unsigned int)info->cursor_offset);	info->exa->offScreenBase += cursor_size;    }#if defined(XF86DRI)    if (info->directRenderingEnabled) {	int depthCpp = (info->depthBits - 8) / 4, l, next, depth_size;	info->frontOffset = 0;	info->frontPitch = pScrn->displayWidth;	RADEONDRIAllocatePCIGARTTable(pScreen);		if (info->cardType==CARD_PCIE)	  xf86DrvMsg(pScrn->scrnIndex, X_INFO,		     "Will use %d kb for PCI GART at offset 0x%08x\n",		     RADEON_PCIGART_TABLE_SIZE / 1024,		     (int)info->pciGartOffset);	/* Reserve a static area for the back buffer the same size as the	 * visible screen.  XXX: This would be better initialized in ati_dri.c	 * when GLX is set up, but the offscreen memory manager's allocations	 * don't last through VT switches, while the kernel's understanding of	 * offscreen locations does.	 */	info->backPitch = pScrn->displayWidth;	next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN);	if (!info->noBackBuffer &&	    next + screen_size <= info->exa->memorySize)	{	    info->backOffset = next;	    info->exa->offScreenBase = next + screen_size;	    xf86DrvMsg(pScrn->scrnIndex, X_INFO,		       "Will use %d kb for back buffer at offset 0x%08x\n",		       screen_size / 1024, info->backOffset);	}	/* Reserve the static depth buffer, and adjust pitch and height to	 * handle tiling.	 */	info->depthPitch = RADEON_ALIGN(pScrn->displayWidth, 32);	depth_size = RADEON_ALIGN(pScrn->virtualY, 16) * info->depthPitch * depthCpp;	next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN);	if (next + depth_size <= info->exa->memorySize)	{	    info->depthOffset = next;	    info->exa->offScreenBase = next + depth_size;	    xf86DrvMsg(pScrn->scrnIndex, X_INFO,		       "Will use %d kb for depth buffer at offset 0x%08x\n",		       depth_size / 1024, info->depthOffset);	}		info->textureSize *= (info->exa->memorySize -			      info->exa->offScreenBase) / 100;	l = RADEONLog2(info->textureSize / RADEON_NR_TEX_REGIONS);	if (l < RADEON_LOG_TEX_GRANULARITY)	    l = RADEON_LOG_TEX_GRANULARITY;	info->textureSize = (info->textureSize >> l) << l;	if (info->textureSize >= 512 * 1024) {	    info->textureOffset = info->exa->offScreenBase;	    info->exa->offScreenBase += info->textureSize;	    xf86DrvMsg(pScrn->scrnIndex, X_INFO,		       "Will use %d kb for textures at offset 0x%08x\n",		       info->textureSize / 1024, info->textureOffset);	} else {	    /* Minimum texture size is for 2 256x256x32bpp textures */	    info->textureSize = 0;	}    }#endif /* XF86DRI */	    xf86DrvMsg(pScrn->scrnIndex, X_INFO,	       "Will use %ld kb for X Server offscreen at offset 0x%08lx\n",	       (info->exa->memorySize - info->exa->offScreenBase) /	       1024, info->exa->offScreenBase);    return TRUE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女啊v在线免费观看| 精品国产91九色蝌蚪| 国产美女精品人人做人人爽 | 91丨porny丨国产| 高清成人免费视频| 成人免费av在线| 岛国av在线一区| 国产 日韩 欧美大片| 高清不卡一区二区| 99这里只有久久精品视频| 99久久久久免费精品国产| 91在线视频网址| 色久综合一二码| 911精品国产一区二区在线| 日韩欧美在线观看一区二区三区| 精品三级在线观看| 久久精品人人做人人综合| 国产精品青草综合久久久久99| 国产精品色哟哟| 亚洲一区二区三区三| 免费观看日韩电影| 丁香激情综合国产| 欧美午夜寂寞影院| 日韩精品一区二| 久久久久久久久久久久久女国产乱 | 一区二区三区视频在线观看| 一二三四区精品视频| 日本欧美一区二区三区乱码| 国产精品一区二区视频| av在线播放不卡| 7777精品伊人久久久大香线蕉经典版下载| 日韩免费在线观看| 亚洲视频在线一区观看| 久久精品国产在热久久| 成人国产精品免费| 欧美肥妇bbw| 国产精品少妇自拍| 美女免费视频一区二区| 91亚洲资源网| 精品国产精品网麻豆系列 | 91.成人天堂一区| 久久精品人人做人人爽人人| 亚洲成人精品一区二区| gogo大胆日本视频一区| 日韩精品一区在线| 亚洲综合区在线| 成人伦理片在线| 91精品国产乱码久久蜜臀| 中文字幕亚洲一区二区av在线| 日本不卡在线视频| 欧洲人成人精品| 国产精品日韩成人| 国产精品1区2区3区| 91麻豆精品久久久久蜜臀| 亚洲欧美经典视频| 成人黄色综合网站| wwww国产精品欧美| 日本人妖一区二区| 91麻豆精品国产91久久久久久 | 99久久综合99久久综合网站| 日韩免费性生活视频播放| 亚洲国产裸拍裸体视频在线观看乱了| 高清成人免费视频| 久久九九影视网| 国产成人综合网站| 91福利在线看| 93久久精品日日躁夜夜躁欧美| 欧美国产97人人爽人人喊| 亚洲自拍与偷拍| 国产91精品一区二区麻豆网站| 亚洲精品一区二区三区福利 | 成人美女在线视频| 久久久精品tv| 国产成人av福利| 2024国产精品| 成人午夜视频免费看| 国产精品视频一区二区三区不卡| 国产精品一区三区| 久久久精品国产免大香伊| 盗摄精品av一区二区三区| 欧美国产精品久久| 99re这里只有精品6| 一区二区三区中文字幕精品精品| 色爱区综合激月婷婷| 亚洲一区二区在线视频| 欧美日本一区二区三区四区| 蜜桃精品在线观看| 欧美mv日韩mv国产网站| 国产成a人无v码亚洲福利| 国产精品卡一卡二卡三| 欧美在线999| 蜜臀久久久99精品久久久久久| 亚洲精品在线观| av网站免费线看精品| 亚洲自拍偷拍欧美| 日韩一区二区三区电影在线观看| 国产精品香蕉一区二区三区| 综合久久一区二区三区| 欧美日韩电影在线| 国产精品一二一区| 亚洲黄一区二区三区| 日韩视频一区在线观看| 国产a级毛片一区| 亚洲r级在线视频| 欧美不卡视频一区| 在线视频一区二区三区| 蜜桃av噜噜一区| 成人欧美一区二区三区黑人麻豆| 欧美裸体bbwbbwbbw| 国产精品一区二区不卡| 亚洲一本大道在线| 中文字幕高清一区| 欧美日韩一区三区| 成人午夜激情视频| 日本欧美一区二区在线观看| 中文字幕制服丝袜一区二区三区| 日韩欧美亚洲一区二区| 色综合天天在线| 国产一区二区精品久久| 怡红院av一区二区三区| 久久综合九色综合97婷婷女人 | av在线播放不卡| 免费精品视频最新在线| 一个色在线综合| 国产精品三级av在线播放| 91精品国产综合久久久久久久久久 | 国产日韩欧美精品电影三级在线 | 国产一区二区视频在线| 亚洲香肠在线观看| 日韩毛片视频在线看| 日韩一级在线观看| 欧美色手机在线观看| 91啪九色porn原创视频在线观看| 久久超碰97中文字幕| 日韩激情视频网站| 亚洲电影在线播放| 亚洲另类色综合网站| 国产精品人妖ts系列视频| 精品国产制服丝袜高跟| 日韩欧美在线1卡| 欧美一区二区三区人| 91成人在线观看喷潮| 99热99精品| 99久久久久久| 91免费视频网址| 97久久超碰国产精品电影| av电影在线不卡| 国产精品911| 国产成人午夜99999| 国产精品一区不卡| 高清不卡一区二区| 成人网在线播放| 波多野结衣的一区二区三区| 成人精品gif动图一区| 波多野结衣在线一区| av中文字幕在线不卡| 不卡的av电影| 99久久婷婷国产综合精品电影| 国产高清精品网站| 成人av在线观| 欧美性生交片4| 欧美精品久久一区| 日韩欧美国产小视频| 久久视频一区二区| 国产精品毛片高清在线完整版 | 色8久久人人97超碰香蕉987| 色噜噜狠狠成人网p站| 欧美老年两性高潮| 欧美一区二区三区视频免费播放| 精品人伦一区二区色婷婷| 精品国产免费一区二区三区四区 | 欧美国产精品一区| 亚洲欧美另类小说视频| 亚洲成av人影院在线观看网| 久久精品国产第一区二区三区| 狠狠色丁香婷婷综合| www.成人在线| 欧美婷婷六月丁香综合色| 欧美大黄免费观看| 国产精品全国免费观看高清| 亚洲成av人在线观看| 国产电影精品久久禁18| 欧美性做爰猛烈叫床潮| 26uuu另类欧美| 亚洲第一主播视频| 国产成人在线观看| 欧美日韩在线不卡| 国产欧美综合色| 日韩成人免费电影| 99久久久久久| 欧美精品一区二区三区高清aⅴ| 亚洲三级在线播放| 国内精品国产成人| 欧美性猛交一区二区三区精品| 久久一区二区三区四区| 婷婷六月综合网| 日本久久一区二区| 国产日韩亚洲欧美综合| 午夜精品久久久久久| 91视视频在线直接观看在线看网页在线看 |