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

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

?? radeon_render.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright 2004 Eric Anholt * 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> *    Hui Yu <hyu@ati.com> * */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <string.h>#ifdef USE_XAA#include "dixstruct.h"#include "xaa.h"#include "xaalocal.h"#ifndef RENDER_GENERIC_HELPER#define RENDER_GENERIC_HELPERstruct blendinfo {	Bool dst_alpha;	Bool src_alpha;	CARD32 blend_cntl;};/* The first part of blend_cntl corresponds to Fa from the render "protocol" * document, and the second part to Fb. */static const struct blendinfo RadeonBlendOp[] = {    /* Clear */    {0, 0, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_ZERO},    /* Src */    {0, 0, RADEON_SRC_BLEND_GL_ONE |	   RADEON_DST_BLEND_GL_ZERO},    /* Dst */    {0, 0, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_ONE},    /* Over */    {0, 1, RADEON_SRC_BLEND_GL_ONE |	   RADEON_DST_BLEND_GL_ONE_MINUS_SRC_ALPHA},    /* OverReverse */    {1, 0, RADEON_SRC_BLEND_GL_ONE_MINUS_DST_ALPHA |	   RADEON_DST_BLEND_GL_ONE},    /* In */    {1, 0, RADEON_SRC_BLEND_GL_DST_ALPHA |	   RADEON_DST_BLEND_GL_ZERO},    /* InReverse */    {0, 1, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_SRC_ALPHA},    /* Out */    {1, 0, RADEON_SRC_BLEND_GL_ONE_MINUS_DST_ALPHA |	   RADEON_DST_BLEND_GL_ZERO},    /* OutReverse */    {0, 1, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_ONE_MINUS_SRC_ALPHA},    /* Atop */    {1, 1, RADEON_SRC_BLEND_GL_DST_ALPHA |	   RADEON_DST_BLEND_GL_ONE_MINUS_SRC_ALPHA},    /* AtopReverse */    {1, 1, RADEON_SRC_BLEND_GL_ONE_MINUS_DST_ALPHA |	   RADEON_DST_BLEND_GL_SRC_ALPHA},    /* Xor */    {1, 1, RADEON_SRC_BLEND_GL_ONE_MINUS_DST_ALPHA |	   RADEON_DST_BLEND_GL_ONE_MINUS_SRC_ALPHA},    /* Add */    {0, 0, RADEON_SRC_BLEND_GL_ONE |	   RADEON_DST_BLEND_GL_ONE},    /* Saturate */    {1, 1, RADEON_SRC_BLEND_GL_SRC_ALPHA_SATURATE |	   RADEON_DST_BLEND_GL_ONE},    {0, 0, 0},    {0, 0, 0},    /* DisjointClear */    {0, 0, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_ZERO},    /* DisjointSrc */    {0, 0, RADEON_SRC_BLEND_GL_ONE |	   RADEON_DST_BLEND_GL_ZERO},    /* DisjointDst */    {0, 0, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_ONE},    /* DisjointOver unsupported */    {0, 0, 0},    /* DisjointOverReverse */    {1, 1, RADEON_SRC_BLEND_GL_SRC_ALPHA_SATURATE |	   RADEON_DST_BLEND_GL_ONE},    /* DisjointIn unsupported */    {0, 0, 0},    /* DisjointInReverse unsupported */    {0, 0, 0},    /* DisjointOut unsupported */    {1, 1, RADEON_SRC_BLEND_GL_SRC_ALPHA_SATURATE |	   RADEON_DST_BLEND_GL_ZERO},    /* DisjointOutReverse unsupported */    {0, 0, 0},    /* DisjointAtop unsupported */    {0, 0, 0},    /* DisjointAtopReverse unsupported */    {0, 0, 0},    /* DisjointXor unsupported */    {0, 0, 0},    {0, 0, 0},    {0, 0, 0},    {0, 0, 0},    {0, 0, 0},    /* ConjointClear */    {0, 0, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_ZERO},    /* ConjointSrc */    {0, 0, RADEON_SRC_BLEND_GL_ONE |	   RADEON_DST_BLEND_GL_ZERO},    /* ConjointDst */    {0, 0, RADEON_SRC_BLEND_GL_ZERO |	   RADEON_DST_BLEND_GL_ONE},};#define RadeonOpMax (sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0]))/* Note on texture formats: * TXFORMAT_Y8 expands to (Y,Y,Y,1).  TXFORMAT_I8 expands to (I,I,I,I) * The RADEON and R200 TXFORMATS we use are the same on r100/r200. */static CARD32 RADEONTextureFormats[] = {    PICT_a8r8g8b8,    PICT_a8,    PICT_x8r8g8b8,    PICT_r5g6b5,    PICT_a1r5g5b5,    PICT_x1r5g5b5,    0};static CARD32 RADEONDstFormats[] = {    PICT_a8r8g8b8,    PICT_x8r8g8b8,    PICT_r5g6b5,    PICT_a1r5g5b5,    PICT_x1r5g5b5,    0};static CARD32RadeonGetTextureFormat(CARD32 format){    switch (format) {    case PICT_a8r8g8b8:	return RADEON_TXFORMAT_ARGB8888 | RADEON_TXFORMAT_ALPHA_IN_MAP;    case PICT_a8:	return RADEON_TXFORMAT_I8 | RADEON_TXFORMAT_ALPHA_IN_MAP;    case PICT_x8r8g8b8:	return RADEON_TXFORMAT_ARGB8888;    case PICT_r5g6b5:	return RADEON_TXFORMAT_RGB565;    case PICT_a1r5g5b5:	return RADEON_TXFORMAT_ARGB1555 | RADEON_TXFORMAT_ALPHA_IN_MAP;    case PICT_x1r5g5b5:	return RADEON_TXFORMAT_ARGB1555;    default:	return 0;    }}static CARD32RadeonGetColorFormat(CARD32 format){    switch (format) {    case PICT_a8r8g8b8:    case PICT_x8r8g8b8:	return RADEON_COLOR_FORMAT_ARGB8888;    case PICT_r5g6b5:	return RADEON_COLOR_FORMAT_RGB565;    case PICT_a1r5g5b5:    case PICT_x1r5g5b5:	return RADEON_COLOR_FORMAT_ARGB1555;    default:	return 0;    }}/* Returns a RADEON_RB3D_BLENDCNTL value, or 0 if the operation is not * supported */static CARD32RadeonGetBlendCntl(CARD8 op, CARD32 dstFormat){    CARD32 blend_cntl;    if (op >= RadeonOpMax || RadeonBlendOp[op].blend_cntl == 0)	return 0;    blend_cntl = RadeonBlendOp[op].blend_cntl;	    if (RadeonBlendOp[op].dst_alpha && !PICT_FORMAT_A(dstFormat)) {	CARD32 srcblend = blend_cntl & RADEON_SRC_BLEND_MASK;	/* If there's no destination alpha channel, we need to wire the blending	 * to treat the alpha channel as always 1.	 */	if (srcblend == RADEON_SRC_BLEND_GL_ONE_MINUS_DST_ALPHA ||	    srcblend == RADEON_SRC_BLEND_GL_SRC_ALPHA_SATURATE)	    blend_cntl = (blend_cntl & ~RADEON_SRC_BLEND_MASK) |			 RADEON_SRC_BLEND_GL_ZERO;	else if (srcblend == RADEON_SRC_BLEND_GL_DST_ALPHA)	    blend_cntl = (blend_cntl & ~RADEON_SRC_BLEND_MASK) |			 RADEON_SRC_BLEND_GL_ONE;    }    return blend_cntl;}static __inline__ CARD32 F_TO_DW(float val){    union {	float f;	CARD32 l;    } tmp;    tmp.f = val;    return tmp.l;}/* Compute log base 2 of val. */static __inline__ intATILog2(int val){	int bits;	for (bits = 0; val != 0; val >>= 1, ++bits)		;	return bits - 1;}static voidRemoveLinear (FBLinearPtr linear){   RADEONInfoPtr info = (RADEONInfoPtr)(linear->devPrivate.ptr);   info->RenderTex = NULL; }static voidRenderCallback (ScrnInfoPtr pScrn){    RADEONInfoPtr  info       = RADEONPTR(pScrn);    if ((currentTime.milliseconds > info->RenderTimeout) && info->RenderTex) {	xf86FreeOffscreenLinear(info->RenderTex);	info->RenderTex = NULL;    }    if (!info->RenderTex)	info->RenderCallback = NULL;}static BoolAllocateLinear (   ScrnInfoPtr pScrn,   int sizeNeeded){   RADEONInfoPtr  info       = RADEONPTR(pScrn);   int cpp = info->CurrentLayout.bitsPerPixel / 8;   info->RenderTimeout = currentTime.milliseconds + 30000;   info->RenderCallback = RenderCallback;   /* XAA allocates in units of pixels at the screen bpp, so adjust size    * appropriately.    */   sizeNeeded = (sizeNeeded + cpp - 1) / cpp;   if (info->RenderTex) {	if (info->RenderTex->size >= sizeNeeded)	   return TRUE;	else {	   if (xf86ResizeOffscreenLinear(info->RenderTex, sizeNeeded))		return TRUE;	   xf86FreeOffscreenLinear(info->RenderTex);	   info->RenderTex = NULL;	}   }   info->RenderTex = xf86AllocateOffscreenLinear(pScrn->pScreen, sizeNeeded, 32,						 NULL, RemoveLinear, info);   return (info->RenderTex != NULL);}#if X_BYTE_ORDER == X_BIG_ENDIANstatic Bool RADEONSetupRenderByteswap(ScrnInfoPtr pScrn, int tex_bytepp){    RADEONInfoPtr info = RADEONPTR(pScrn);    unsigned char *RADEONMMIO = info->MMIO;    CARD32 swapper = info->ModeReg.surface_cntl;    swapper &= ~(RADEON_NONSURF_AP0_SWP_16BPP | RADEON_NONSURF_AP1_SWP_16BPP |		 RADEON_NONSURF_AP0_SWP_32BPP | RADEON_NONSURF_AP1_SWP_32BPP);    /* Set up byte swapping for the framebuffer aperture as needed */    switch (tex_bytepp) {    case 1:	break;    case 2:	swapper |= RADEON_NONSURF_AP0_SWP_16BPP | RADEON_NONSURF_AP1_SWP_16BPP;	break;    case 4:	swapper |= RADEON_NONSURF_AP0_SWP_32BPP | RADEON_NONSURF_AP1_SWP_32BPP;	break;    default:	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: Don't know what to do for "		   "tex_bytepp == %d!\n", __func__, tex_bytepp);	return FALSE;    }    OUTREG(RADEON_SURFACE_CNTL, swapper);    return TRUE;}static void RADEONRestoreByteswap(RADEONInfoPtr info){    unsigned char *RADEONMMIO = info->MMIO;    OUTREG(RADEON_SURFACE_CNTL, info->ModeReg.surface_cntl);}#endif	/* X_BYTE_ORDER == X_BIG_ENDIAN */#endif	/* RENDER_GENERIC_HELPER */#if defined(ACCEL_MMIO) && defined(ACCEL_CP)#error Cannot define both MMIO and CP acceleration!#endif#if !defined(UNIXCPP) || defined(ANSICPP)#define FUNC_NAME_CAT(prefix,suffix) prefix##suffix#else#define FUNC_NAME_CAT(prefix,suffix) prefix/**/suffix#endif#ifdef ACCEL_MMIO#define FUNC_NAME(prefix) FUNC_NAME_CAT(prefix,MMIO)#else#ifdef ACCEL_CP#define FUNC_NAME(prefix) FUNC_NAME_CAT(prefix,CP)#else#error No accel type defined!#endif#endifstatic Bool FUNC_NAME(R100SetupTexture)(	ScrnInfoPtr pScrn,	CARD32 format,	CARD8 *src,	int src_pitch,	unsigned int width,	unsigned int height,	int flags){    RADEONInfoPtr info = RADEONPTR(pScrn);    CARD8 *dst;    CARD32 tex_size = 0, txformat;    int dst_pitch, offset, size, tex_bytepp;#ifdef ACCEL_CP    CARD32 buf_pitch, dst_pitch_off;    int x, y;    unsigned int hpass;    CARD8 *tmp_dst;#endif    ACCEL_PREAMBLE();    /* render repeat is broken - fix in stable tree by falling back */    if (flags & XAA_RENDER_REPEAT)	return FALSE;    if ((width > 2048) || (height > 2048))	return FALSE;    txformat = RadeonGetTextureFormat(format);    tex_bytepp = PICT_FORMAT_BPP(format) >> 3;#ifndef ACCEL_CP#if X_BYTE_ORDER == X_BIG_ENDIAN    if (!RADEONSetupRenderByteswap(pScrn, tex_bytepp)) {	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: RADEONSetupRenderByteswap() "		   "failed!\n", __func__);	return FALSE;    }#endif#endif    dst_pitch = (width * tex_bytepp + 63) & ~63;    size = dst_pitch * height;    if (!AllocateLinear(pScrn, size))	return FALSE;    if (flags & XAA_RENDER_REPEAT) {	txformat |= ATILog2(width) << RADEON_TXFORMAT_WIDTH_SHIFT;	txformat |= ATILog2(height) << RADEON_TXFORMAT_HEIGHT_SHIFT;    } else {	tex_size = ((height - 1) << 16) | (width - 1);	txformat |= RADEON_TXFORMAT_NON_POWER2;    }    offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8;    dst = (CARD8*)(info->FB + offset);    /* Upload texture to card. */#ifdef ACCEL_CP    RADEONHostDataParams( pScrn, dst, dst_pitch, tex_bytepp, &dst_pitch_off, &x, &y );    while ( height )    {    	tmp_dst = RADEONHostDataBlit( pScrn, tex_bytepp, width,				      dst_pitch_off, &buf_pitch,				      x, &y, &height, &hpass );	RADEONHostDataBlitCopyPass( pScrn, tex_bytepp, tmp_dst, src,				    hpass, buf_pitch, src_pitch );	src += hpass * src_pitch;    }    RADEON_PURGE_CACHE();    RADEON_WAIT_UNTIL_IDLE();#else    if (info->accel->NeedToSync)	info->accel->Sync(pScrn);    while (height--) {	memcpy(dst, src, width * tex_bytepp);	src += src_pitch;	dst += dst_pitch;    }#if X_BYTE_ORDER == X_BIG_ENDIAN    RADEONRestoreByteswap(info);#endif#endif	/* ACCEL_CP */    BEGIN_ACCEL(5);    OUT_ACCEL_REG(RADEON_PP_TXFORMAT_0, txformat);    OUT_ACCEL_REG(RADEON_PP_TEX_SIZE_0, tex_size);    OUT_ACCEL_REG(RADEON_PP_TEX_PITCH_0, dst_pitch - 32);    OUT_ACCEL_REG(RADEON_PP_TXOFFSET_0, offset + info->fbLocation +					pScrn->fbOffset);    OUT_ACCEL_REG(RADEON_PP_TXFILTER_0, RADEON_MAG_FILTER_LINEAR |					RADEON_MIN_FILTER_LINEAR |					RADEON_CLAMP_S_WRAP |					RADEON_CLAMP_T_WRAP);    FINISH_ACCEL();    return TRUE;}static BoolFUNC_NAME(R100SetupForCPUToScreenAlphaTexture) (	ScrnInfoPtr	pScrn,	int		op,	CARD16		red,	CARD16		green,	CARD16		blue,	CARD16		alpha,	CARD32		maskFormat,	CARD32		dstFormat,	CARD8		*alphaPtr,	int		alphaPitch,	int		width,	int		height,	int		flags) {    RADEONInfoPtr info = RADEONPTR(pScrn);    CARD32 colorformat, srccolor, blend_cntl;    ACCEL_PREAMBLE();    blend_cntl = RadeonGetBlendCntl(op, dstFormat);    if (blend_cntl == 0)	return FALSE;    if (!info->XInited3D)	RADEONInit3DEngine(pScrn);    if (!FUNC_NAME(R100SetupTexture)(pScrn, maskFormat, alphaPtr, alphaPitch,				     width, height, flags))	return FALSE;    colorformat = RadeonGetColorFormat(dstFormat);    srccolor = ((alpha & 0xff00) << 16) | ((red & 0xff00) << 8) | (blue >> 8) |	(green & 0xff00);    BEGIN_ACCEL(7);    OUT_ACCEL_REG(RADEON_RB3D_CNTL, colorformat | RADEON_ALPHA_BLEND_ENABLE);    OUT_ACCEL_REG(RADEON_PP_CNTL, RADEON_TEX_0_ENABLE |				  RADEON_TEX_BLEND_0_ENABLE);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米在线7777在线精品| 欧美午夜精品久久久久久孕妇| 久久嫩草精品久久久精品| 国产精品99久| 亚洲一级片在线观看| 精品日韩欧美在线| 99久久综合精品| 裸体在线国模精品偷拍| 亚洲欧洲综合另类在线| 精品国一区二区三区| 在线一区二区视频| 麻豆国产欧美一区二区三区| 中文字幕人成不卡一区| 欧美一级免费大片| 91蝌蚪porny成人天涯| 国产精品系列在线播放| 婷婷一区二区三区| 亚洲一区二区视频在线| 亚洲欧美自拍偷拍色图| 国产精品天天看| 国产精品三级电影| 久久久久久免费毛片精品| 日韩一级完整毛片| 欧美一区二区日韩一区二区| 3751色影院一区二区三区| 99热这里都是精品| 99re这里只有精品视频首页| 国产精品一区二区黑丝| 国产91露脸合集magnet| 国产精品自拍三区| 一本到不卡免费一区二区| 91麻豆蜜桃一区二区三区| 欧美性videosxxxxx| 3d成人h动漫网站入口| 日韩欧美另类在线| 国产欧美日韩综合精品一区二区| 中文字幕精品一区二区三区精品| 国产精品久久免费看| 亚洲综合网站在线观看| 久久国产精品99精品国产 | 在线观看91av| 国产日韩欧美电影| 亚洲一区二区三区激情| 蜜桃av一区二区在线观看| 不卡的看片网站| 久久影音资源网| 视频一区二区欧美| 99精品国产一区二区三区不卡 | 99国产精品久| 日韩免费在线观看| 亚洲成人激情av| 不卡的电视剧免费网站有什么| 欧美日免费三级在线| 日本一区二区视频在线| 激情图区综合网| 欧美视频完全免费看| 亚洲日本中文字幕区| 国产一区二区在线视频| 欧美精品丝袜久久久中文字幕| 欧美经典三级视频一区二区三区| 美女视频黄 久久| 欧美电视剧免费全集观看| 日韩在线一区二区三区| 91亚洲国产成人精品一区二三 | 欧美日韩一区高清| 亚洲成人免费观看| 欧美少妇性性性| 日韩在线一区二区三区| 欧美色图12p| 亚洲18女电影在线观看| 日韩精品中午字幕| www.爱久久.com| 亚洲精品视频在线观看免费| 94色蜜桃网一区二区三区| 亚洲一区二区欧美| 日韩免费成人网| 丁香婷婷综合激情五月色| 国产视频一区不卡| 成人av在线资源| 亚洲不卡av一区二区三区| 欧美一区二区播放| 99这里都是精品| 亚洲va国产va欧美va观看| 久久久91精品国产一区二区三区| 盗摄精品av一区二区三区| 亚洲欧美aⅴ...| 国产午夜精品美女毛片视频| 91一区二区三区在线观看| 日韩精品1区2区3区| 中文子幕无线码一区tr| 欧美久久久久久久久久| 成人h版在线观看| 国产一区视频在线看| 亚洲国产另类av| 亚洲精品国产精品乱码不99| 日韩精品一区二区三区在线| 色婷婷综合久久久中文字幕| 国产精品1024| 麻豆91在线播放| 日本视频中文字幕一区二区三区| 亚洲免费观看高清完整版在线观看熊| 日韩精品一区二区三区在线| 欧美日韩日日摸| 欧美综合视频在线观看| 95精品视频在线| 91蜜桃婷婷狠狠久久综合9色| 韩国成人在线视频| 国产一区二区久久| 国产麻豆视频一区| a在线欧美一区| 成人短视频下载 | 色综合视频在线观看| 色欧美日韩亚洲| 欧美美女一区二区三区| 欧美精选午夜久久久乱码6080| 欧美日韩精品免费观看视频| 欧美私模裸体表演在线观看| 欧美日韩免费观看一区三区| 欧美理论片在线| 精品黑人一区二区三区久久| 国产婷婷色一区二区三区四区| 18欧美乱大交hd1984| 一区二区成人在线视频| 免费欧美在线视频| 粉嫩嫩av羞羞动漫久久久 | 亚洲激情六月丁香| 免费看日韩精品| 色哟哟国产精品| 欧美一区二区三区小说| 中文字幕在线免费不卡| 午夜久久久影院| 一本久久a久久精品亚洲| 欧美猛男超大videosgay| 中文字幕日本不卡| 蜜臀精品一区二区三区在线观看| 成人黄色在线网站| 久久久另类综合| 麻豆精品国产传媒mv男同| 91久久香蕉国产日韩欧美9色| 精品国产伦一区二区三区观看体验| 综合激情成人伊人| 国产精品一区二区在线播放| 日韩午夜中文字幕| 日韩电影免费在线看| 欧美日韩精品久久久| 亚洲视频 欧洲视频| 国产精品77777| 国产亚洲人成网站| 激情欧美一区二区| 欧美电视剧免费全集观看| 日韩国产一区二| 欧美丰满高潮xxxx喷水动漫| 亚洲国产成人精品视频| 欧美日韩精品欧美日韩精品一| 亚洲国产aⅴ天堂久久| 欧美精品 国产精品| 美女看a上一区| www久久久久| 99久久国产综合色|国产精品| 中文字幕一区二区三区不卡在线| 成人免费视频播放| 亚洲午夜私人影院| 日韩欧美国产综合一区| 国产在线精品一区二区三区不卡 | 欧美成人r级一区二区三区| 另类小说图片综合网| 国产精品视频在线看| 欧美狂野另类xxxxoooo| 久久se精品一区精品二区| 一区在线播放视频| 久久亚洲欧美国产精品乐播| 成人黄动漫网站免费app| 午夜a成v人精品| 国产无一区二区| 91麻豆精品国产91久久久资源速度| 国产麻豆一精品一av一免费 | 一本一本大道香蕉久在线精品 | 欧美精品色一区二区三区| 成人网男人的天堂| 美女高潮久久久| 毛片不卡一区二区| 蜜臀精品一区二区三区在线观看| 一区二区在线观看不卡| 久久婷婷色综合| 日韩美一区二区三区| 欧美久久一二三四区| 一本色道久久综合亚洲aⅴ蜜桃| 日本一道高清亚洲日美韩| 欧美一卡二卡在线观看| 免费欧美高清视频| 亚洲国产婷婷综合在线精品| 麻豆国产欧美一区二区三区| 国产成人av一区二区三区在线观看| 99免费精品视频| 精品91自产拍在线观看一区| 国产精品妹子av| 亚洲色图清纯唯美| 亚洲一区欧美一区| 久草这里只有精品视频| 成人亚洲一区二区一|