久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 队列执行动画,Android 重学系列 渲染图层-图元缓冲队列初始化

發(fā)布時間:2025/3/15 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 队列执行动画,Android 重学系列 渲染图层-图元缓冲队列初始化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

經(jīng)過上一篇文章,對開機啟動動畫的流程梳理,引出了實際上在開機啟動動畫中,并沒有Activity,而是通過OpenGL es進行渲染,最后通過某種方式,把數(shù)據(jù)交給Android渲染系統(tǒng)。

本文,先來探索在調(diào)用OpenGL es進行渲染的前期準備。

正文

讓我們回憶一下,上一篇開機動畫OpenGL es 使用步驟,大致分為如下幾個:

1.SurfaceComposerClient::getBuiltInDisplay 從SF中查詢可用的物理屏幕

2.SurfaceComposerClient::getDisplayInfo 從SF中獲取屏幕的詳細信息

3.session()->createSurface 通過Client創(chuàng)建繪制平面控制中心

4.t.setLayer(control, 0x40000000) 設置當前l(fā)ayer的層級

5.control->getSurface 獲取真正的繪制平面對象

6.eglGetDisplay 獲取opengl es的默認主屏幕,加載OpenGL es

7.eglInitialize 初始化屏幕對象和著色器緩存

8.eglChooseConfig 自動篩選出最合適的配置

9.eglCreateWindowSurface 從Surface中創(chuàng)建一個opengl es的surface

10.eglCreateContext 創(chuàng)建當前opengl es 的上下文

11.eglQuerySurface 查找當前環(huán)境的寬高屬性

12.eglMakeCurrent 把上下文Context,屏幕display還有渲染面surface,線程關(guān)聯(lián)起來。

13.調(diào)用OpenGL es本身特性,繪制頂點,紋理等。

eglSwapBuffers 交換繪制好的緩沖區(qū)

15.銷毀資源

我們就沿著這個邏輯看看在這個過程中Android的渲染系統(tǒng)在其中擔任了什么角色。

SurfaceComposerClient::getBuiltInDisplay

sp SurfaceComposerClient::getBuiltInDisplay(int32_t id) {

return ComposerService::getComposerService()->getBuiltInDisplay(id);

}

ComposerService本質(zhì)上是ISurfaceComposer 一個BpBinder對象,對應著BnBinder對象是SF,也就到了SF的getBuiltInDisplay。

SF getBuiltInDisplay

sp SurfaceFlinger::getBuiltInDisplay(int32_t id) {

if (uint32_t(id) >= DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) {

return nullptr;

}

return mBuiltinDisplays[id];

}

還記得我初始化第一篇聊過這個數(shù)據(jù)結(jié)構(gòu)嗎?mBuiltinDisplays 將會持有根據(jù)每一個displayID也同時displayType持有一個BBinder作為核心。然而此時的BBinder只是一個通信基礎,還沒有任何處理命令的邏輯。我們需要看下面那個方法做了什么?

SurfaceComposerClient::getDisplayInfo

status_t SurfaceComposerClient::getDisplayConfigs(

const sp& display, Vector* configs)

{

return ComposerService::getComposerService()->getDisplayConfigs(display, configs);

}

int SurfaceComposerClient::getActiveConfig(const sp& display) {

return ComposerService::getComposerService()->getActiveConfig(display);

}

status_t SurfaceComposerClient::getDisplayInfo(const sp& display,

DisplayInfo* info) {

Vector configs;

status_t result = getDisplayConfigs(display, &configs);

if (result != NO_ERROR) {

return result;

}

int activeId = getActiveConfig(display);

if (activeId < 0) {

ALOGE("No active configuration found");

return NAME_NOT_FOUND;

}

*info = configs[static_cast(activeId)];

return NO_ERROR;

}

該方法通過了兩次Binder通信進行屏幕數(shù)據(jù)的獲取,第一次getDisplayConfigs,如果成功則getDisplayConfigs獲取第二次。

SF getDisplayConfigs

status_t SurfaceFlinger::getDisplayConfigs(const sp& display,

Vector* configs) {

...

int32_t type = NAME_NOT_FOUND;

for (int i=0 ; i<:num_builtin_display_types i>

if (display == mBuiltinDisplays[i]) {

type = i;

break;

}

}

if (type < 0) {

return type;

}

// TODO: Not sure if display density should handled by SF any longer

class Density {

static int getDensityFromProperty(char const* propName) {

char property[PROPERTY_VALUE_MAX];

int density = 0;

if (property_get(propName, property, nullptr) > 0) {

density = atoi(property);

}

return density;

}

public:

static int getEmuDensity() {

return getDensityFromProperty("qemu.sf.lcd_density"); }

static int getBuildDensity() {

return getDensityFromProperty("ro.sf.lcd_density"); }

};

configs->clear();

ConditionalLock _l(mStateLock,

std::this_thread::get_id() != mMainThreadId);

for (const auto& hwConfig : getHwComposer().getConfigs(type)) {

DisplayInfo info = DisplayInfo();

float xdpi = hwConfig->getDpiX();

float ydpi = hwConfig->getDpiY();

//默認主屏幕的獲取DPI的法則

if (type == DisplayDevice::DISPLAY_PRIMARY) {

// The density of the device is provided by a build property

float density = Density::getBuildDensity() / 160.0f;

if (density == 0) {

// the build doesn't provide a density -- this is wrong!

// use xdpi instead

ALOGE("ro.sf.lcd_density must be defined as a build property");

density = xdpi / 160.0f;

}

if (Density::getEmuDensity()) {

xdpi = ydpi = density = Density::getEmuDensity();

density /= 160.0f;

}

info.density = density;

// TODO: this needs to go away (currently needed only by webkit)

sp hw(getDefaultDisplayDeviceLocked());

info.orientation = hw ? hw->getOrientation() : 0;

} else {

...

}

info.w = hwConfig->getWidth();

info.h = hwConfig->getHeight();

info.xdpi = xdpi;

info.ydpi = ydpi;

info.fps = 1e9 / hwConfig->getVsyncPeriod();

info.appVsyncOffset = vsyncPhaseOffsetNs;

info.presentationDeadline = hwConfig->getVsyncPeriod() -

sfVsyncPhaseOffsetNs + 1000000;

info.secure = true;

if (type == DisplayDevice::DISPLAY_PRIMARY &&

mPrimaryDisplayOrientation & DisplayState::eOrientationSwapMask) {

std::swap(info.w, info.h);

}

configs->push_back(info);

}

return NO_ERROR;

}

能看到這里BBinder實際并不是作為通信使用,而是作為對象標示。用來篩選出對應的屏幕的type是什么。

核心是下面這一段,先從HWComposer中獲取該id的屏幕的信息,并且保存在DisplayInfo。我們關(guān)注Density,也就是dpi是怎么計算的。

解釋一下dpi是什么,dpi是對角線每一個英寸下有多少像素。

計算就很簡單就是一個普通勾股定理即可。

其實這個數(shù)值是由ro.sf.lcd_density和qemu.sf.lcd_density屬性決定的。當然如果ro.sf.lcd_density沒有數(shù)值,則density則是由HWC的getConfigs的xdpi/160決定。最后找找qemu.sf.lcd_density,如果有數(shù)值,則xdpi,ydpi全部都是它,但是density則是qemu.sf.lcd_density數(shù)值/160.換句話說,qemu.sf.lcd_density這個LCD全局參數(shù)起了決定性的因素。

當然,沒有設置這兩個屬性,xdpi和ydpi則是默認的從HWC獲取出來的數(shù)據(jù),density 為xdpi/160f。

當然此時還會判斷整個屏幕的橫豎狀態(tài),最后在做一次寬高的顛倒。

HWComposer getConfigs

std::vector<:shared_ptr hwc2::display::config>>

HWComposer::getConfigs(int32_t displayId) const {

RETURN_IF_INVALID_DISPLAY(displayId, {});

auto& displayData = mDisplayData[displayId];

auto configs = mDisplayData[displayId].hwcDisplay->getConfigs();

if (displayData.configMap.empty()) {

for (size_t i = 0; i < configs.size(); ++i) {

displayData.configMap[i] = configs[i];

}

}

return configs;

}

還記得在SF初始化中,當onHotPlugin進入到HWC之后,先添加到HWCDevice中,之后就會添加到mDisplayData中。其實就是HWC::Display對象。而這個對象在初始化的時候就會讀取對應配置保存起來。

文件:/frameworks/native/services/surfaceflinger/DisplayHardware/HWC2.cpp

void Display::loadConfigs()

{

ALOGV("[%" PRIu64 "] loadConfigs", mId);

std::vector<:config> configIds;

auto intError = mComposer.getDisplayConfigs(mId, &configIds);

auto error = static_cast(intError);

if (error != Error::None) {

return;

}

for (auto configId : configIds) {

loadConfig(configId);

}

}

void Display::loadConfig(hwc2_config_t configId)

{

ALOGV("[%" PRIu64 "] loadConfig(%u)", mId, configId);

auto config = Config::Builder(*this, configId)

.setWidth(getAttribute(configId, Attribute::Width))

.setHeight(getAttribute(configId, Attribute::Height))

.setVsyncPeriod(getAttribute(configId, Attribute::VsyncPeriod))

.setDpiX(getAttribute(configId, Attribute::DpiX))

.setDpiY(getAttribute(configId, Attribute::DpiY))

.build();

mConfigs.emplace(configId, std::move(config));

}

int32_t Display::getAttribute(hwc2_config_t configId, Attribute attribute)

{

int32_t value = 0;

auto intError = mComposer.getDisplayAttribute(mId, configId,

static_cast<:icomposerclient::attribute>(attribute),

&value);

auto error = static_cast(intError);

if (error != Error::None) {

ALOGE("getDisplayAttribute(%" PRIu64 ", %u, %s) failed: %s (%d)", mId,

configId, to_string(attribute).c_str(),

to_string(error).c_str(), intError);

return -1;

}

return value;

}

我們找到對應保存硬件的configId,最后通過getDisplayAttribute查找,每一個屬性是什么。

此時就會到Hal層中讀取屏幕信息。根據(jù)上兩節(jié)的UML圖就能知道本質(zhì)上是通過hw_device_t和硬件進行通信,那么我們就繼續(xù)以msm8960為基準閱讀。

文件:/hardware/qcom/display/msm8960/libhwcomposer/hwc.cpp

int hwc_getDisplayAttributes(struct hwc_composer_device_1* dev, int disp,

uint32_t config, const uint32_t* attributes, int32_t* values) {

hwc_context_t* ctx = (hwc_context_t*)(dev);

//If hotpluggable displays are inactive return error

if(disp == HWC_DISPLAY_EXTERNAL && !ctx->dpyAttr[disp].connected) {

return -1;

}

//From HWComposer

static const uint32_t DISPLAY_ATTRIBUTES[] = {

HWC_DISPLAY_VSYNC_PERIOD,

HWC_DISPLAY_WIDTH,

HWC_DISPLAY_HEIGHT,

HWC_DISPLAY_DPI_X,

HWC_DISPLAY_DPI_Y,

HWC_DISPLAY_NO_ATTRIBUTE,

};

const int NUM_DISPLAY_ATTRIBUTES = (sizeof(DISPLAY_ATTRIBUTES) /

sizeof(DISPLAY_ATTRIBUTES)[0]);

for (size_t i = 0; i < NUM_DISPLAY_ATTRIBUTES - 1; i++) {

switch (attributes[i]) {

case HWC_DISPLAY_VSYNC_PERIOD:

values[i] = ctx->dpyAttr[disp].vsync_period;

break;

case HWC_DISPLAY_WIDTH:

values[i] = ctx->dpyAttr[disp].xres;

ALOGD("%s disp = %d, width = %d",__FUNCTION__, disp,

ctx->dpyAttr[disp].xres);

break;

case HWC_DISPLAY_HEIGHT:

values[i] = ctx->dpyAttr[disp].yres;

ALOGD("%s disp = %d, height = %d",__FUNCTION__, disp,

ctx->dpyAttr[disp].yres);

break;

case HWC_DISPLAY_DPI_X:

values[i] = (int32_t) (ctx->dpyAttr[disp].xdpi*1000.0);

break;

case HWC_DISPLAY_DPI_Y:

values[i] = (int32_t) (ctx->dpyAttr[disp].ydpi*1000.0);

break;

default:

ALOGE("Unknown display attribute %d",

attributes[i]);

return -EINVAL;

}

}

return 0;

}

其實這個時候就是檢測dpyAttr對應id中所有的ydpi,xdpi,xres,xdpi,vsync_period的信息。這個數(shù)組很熟悉,就是onHotPlugin的時候,通過uevent線程的socket回調(diào)上來的信息。

SF getActiveConfig

int SurfaceFlinger::getActiveConfig(const sp& display) {

if (display == nullptr) {

ALOGE("%s : display is nullptr", __func__);

return BAD_VALUE;

}

sp device(getDisplayDevice(display));

if (device != nullptr) {

return device->getActiveConfig();

}

return BAD_VALUE;

}

此時繼續(xù)在用BBinder作為key,找到DisplayDevice,使用DisplayDevice的getActiveConfig。而這個對象是什么?其實就是onHotPlugin的時候,調(diào)用setupNewDisplayDeviceInternal,裝載進來的參數(shù)。

if (state.type < DisplayDevice::DISPLAY_VIRTUAL) {

hw->setActiveConfig(getHwComposer().getActiveConfigIndex(state.type));

}

而這個參數(shù)還是調(diào)用了HWC的getActiveConfigIndex,從Hal中設置了活躍的ConfigId到DisplayDevice中。之后就能拿到這個活躍的ID了。

HWC的getActiveConfigIndex 本質(zhì)上還是調(diào)用了HAL的getActiveConfig方法。而這個方法又是依賴setActiveConfig保存在HWC2On1Adapter::Display中。

什么時候設置呢?還記得我在WMS系列中聊過的RootWindowConatiner的嗎?它會調(diào)用performSurfacePlacement調(diào)用DisplayManagerService的performTraversal,通過SF設置當前活躍屏幕的id。它作為所有窗口的根窗口。同時在Activity onResume刷新界面之時,ViewRootImpl的performTraversals會調(diào)用聊到了WMS的relayout方法,這個方法刷新WMS中某個窗口的界面的時刻將會performSurfacePlacement。

通過這個方法,把WMS,DMS,SF全部串聯(lián)起來。

小結(jié)

思路有點跑遠了,getDisplayInfo實際做的事情拿到當前活躍的屏幕的屏幕信息。

SurfaceComposerClient createSurface

我們來回憶下,這個方法是怎么使用的:

sp control = session()->createSurface(String8("BootAnimation"),

dinfo.w, dinfo.h, PIXEL_FORMAT_RGB_565);

能看到開機動畫設置Surface,設置了Surface的名字,寬高以及Surface的像素格式是RGB-565.

注意,這里是整個SF渲染畫面前期準備最為核心的步驟。

sp SurfaceComposerClient::createSurface(

const String8& name,

uint32_t w,

uint32_t h,

PixelFormat format,

uint32_t flags,

SurfaceControl* parent,

int32_t windowType,

int32_t ownerUid)

{

sp s;

createSurfaceChecked(name, w, h, format, &s, flags, parent, windowType, ownerUid);

return s;

}

status_t SurfaceComposerClient::createSurfaceChecked(

const String8& name,

uint32_t w,

uint32_t h,

PixelFormat format,

sp* outSurface,

uint32_t flags,

SurfaceControl* parent,

int32_t windowType,

int32_t ownerUid)

{

sp sur;

status_t err = mStatus;

if (mStatus == NO_ERROR) {

sp handle;

sp parentHandle;

sp gbp;

if (parent != nullptr) {

parentHandle = parent->getHandle();

}

err = mClient->createSurface(name, w, h, format, flags, parentHandle,

windowType, ownerUid, &handle, &gbp);

ALOGE_IF(err, "SurfaceComposerClient::createSurface error %s", strerror(-err));

if (err == NO_ERROR) {

*outSurface = new SurfaceControl(this, handle, gbp, true /* owned */);

}

}

return err;

}

此時會調(diào)用SF的Client的createSurface創(chuàng)建一個SurfaceControl。能看到傳入了一個十分重要的對象IGraphicBufferProducer,這個對象就是圖元生產(chǎn)者。

Client createSurface

status_t Client::createSurface(

const String8& name,

uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,

const sp& parentHandle, int32_t windowType, int32_t ownerUid,

sp* handle,

sp* gbp)

{

sp parent = nullptr;

if (parentHandle != nullptr) {

auto layerHandle = reinterpret_cast<:handle>(parentHandle.get());

parent = layerHandle->owner.promote();

if (parent == nullptr) {

return NAME_NOT_FOUND;

}

}

if (parent == nullptr) {

bool parentDied;

parent = getParentLayer(&parentDied);

// If we had a parent, but it died, we've lost all

// our capabilities.

if (parentDied) {

return NAME_NOT_FOUND;

}

}

/*

* createSurface must be called from the GL thread so that it can

* have access to the GL context.

*/

class MessageCreateLayer : public MessageBase {

SurfaceFlinger* flinger;

Client* client;

sp* handle;

sp* gbp;

status_t result;

const String8& name;

uint32_t w, h;

PixelFormat format;

uint32_t flags;

sp* parent;

int32_t windowType;

int32_t ownerUid;

public:

MessageCreateLayer(SurfaceFlinger* flinger,

const String8& name, Client* client,

uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,

sp* handle, int32_t windowType, int32_t ownerUid,

sp* gbp,

sp* parent)

: flinger(flinger), client(client),

handle(handle), gbp(gbp), result(NO_ERROR),

name(name), w(w), h(h), format(format), flags(flags),

parent(parent), windowType(windowType), ownerUid(ownerUid) {

}

status_t getResult() const { return result; }

virtual bool handler() {

result = flinger->createLayer(name, client, w, h, format, flags,

windowType, ownerUid, handle, gbp, parent);

return true;

}

};

sp msg = new MessageCreateLayer(mFlinger.get(),

name, this, w, h, format, flags, handle,

windowType, ownerUid, gbp, &parent);

mFlinger->postMessageSync(msg);

return static_cast( msg.get() )->getResult();

}

該方法做了如下事情:

1.首先檢測當前的需要繪制的面Layer是否有父Layer。有則獲取parent的Layer。

2.構(gòu)造一個Handler,等到下一個Loop才進行操作。這個操作就是通過SF調(diào)用createLayer創(chuàng)建一個Layer。注意這里繼續(xù)把Binder接口IGraphicBufferProducer繼續(xù)傳下去。

SF createLayer

status_t SurfaceFlinger::createLayer(

const String8& name,

const sp& client,

uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,

int32_t windowType, int32_t ownerUid, sp* handle,

sp* gbp, sp* parent)

{

if (int32_t(w|h) < 0) {

ALOGE("createLayer() failed, w or h is negative (w=%d, h=%d)",

int(w), int(h));

return BAD_VALUE;

}

status_t result = NO_ERROR;

sp layer;

String8 uniqueName = getUniqueLayerName(name);

switch (flags & ISurfaceComposerClient::eFXSurfaceMask) {

case ISurfaceComposerClient::eFXSurfaceNormal:

result = createBufferLayer(client,

uniqueName, w, h, flags, format,

handle, gbp, &layer);

break;

case ISurfaceComposerClient::eFXSurfaceColor:

result = createColorLayer(client,

uniqueName, w, h, flags,

handle, &layer);

break;

default:

result = BAD_VALUE;

break;

}

if (result != NO_ERROR) {

return result;

}

// window type is WINDOW_TYPE_DONT_SCREENSHOT from SurfaceControl.java

// TODO b/64227542

if (windowType == 441731) {

windowType = 2024; // TYPE_NAVIGATION_BAR_PANEL

layer->setPrimaryDisplayOnly();

}

layer->setInfo(windowType, ownerUid);

result = addClientLayer(client, *handle, *gbp, layer, *parent);

if (result != NO_ERROR) {

return result;

}

...

return result;

}

核心的邏輯分為2步驟:

1.createBufferLayer 創(chuàng)建圖層

2.addClientLayer 把圖層添加到Client

能看到在SF在這個時候會根據(jù)當前傳進來的type創(chuàng)建不同的Layer,分別是:

1.ISurfaceComposerClient::eFXSurfaceNormal 對應BufferLayer

2.ISurfaceComposerClient::eFXSurfaceColor 對應 ColorLayer

eFXSurfaceNormal = 0x00000000,

eFXSurfaceColor = 0x00020000,

eFXSurfaceMask = 0x000F0000,

分別分別是指這2個數(shù)值。在這個時候默認0,創(chuàng)建的是BufferLayer。那么這兩個Layer(圖層)有什么區(qū)別呢?其實ColorLayer一般不會使用,BufferLayer內(nèi)置一套消費者生產(chǎn)者的圖元消費邏輯,能夠持續(xù)不斷的更新圖元。然而ColorLayer中沒有這些邏輯比較小巧,我們可以理解成一個無法變動的圖層。在現(xiàn)在的復雜的UI交互里面,用武之地比較少。

以后遇到再解析ColorLayer,我們需要集中精力給BufferLayer。

createBufferLayer 創(chuàng)建圖層

status_t SurfaceFlinger::createBufferLayer(const sp& client,

const String8& name, uint32_t w, uint32_t h, uint32_t flags, PixelFormat& format,

sp* handle, sp* gbp, sp* outLayer)

{

// initialize the surfaces

switch (format) {

case PIXEL_FORMAT_TRANSPARENT:

case PIXEL_FORMAT_TRANSLUCENT:

format = PIXEL_FORMAT_RGBA_8888;

break;

case PIXEL_FORMAT_OPAQUE:

format = PIXEL_FORMAT_RGBX_8888;

break;

}

sp layer = new BufferLayer(this, client, name, w, h, flags);

status_t err = layer->setBuffers(w, h, format, flags);

if (err == NO_ERROR) {

*handle = layer->getHandle();

*gbp = layer->getProducer();

*outLayer = layer;

}

return err;

}

這里會判斷傳進來的format,如果是需要設定透明色,則強制設置format為RGBA_8888模式。最后生成一個BufferLayer,把BufferLayer中的句柄以及圖元生產(chǎn)者返回客戶端(此時是SurfaceComposerClient中的SurfaceControl)。

Layer的初始化

Layer::Layer(SurfaceFlinger* flinger, const sp& client, const String8& name, uint32_t w,

uint32_t h, uint32_t flags)

: contentDirty(false),

sequence(uint32_t(android_atomic_inc(&sSequence))),

mFlinger(flinger),

mPremultipliedAlpha(true),

mName(name),

mTransactionFlags(0),

mPendingStateMutex(),

mPendingStates(),

mQueuedFrames(0),

mSidebandStreamChanged(false),

mActiveBufferSlot(BufferQueue::INVALID_BUFFER_SLOT),

mCurrentTransform(0),

mOverrideScalingMode(-1),

mCurrentOpacity(true),

mCurrentFrameNumber(0),

mFrameLatencyNeeded(false),

mFiltering(false),

mNeedsFiltering(false),

mProtectedByApp(false),

mClientRef(client),

mPotentialCursor(false),

mQueueItemLock(),

mQueueItemCondition(),

mQueueItems(),

mLastFrameNumberReceived(0),

mAutoRefresh(false),

mFreezeGeometryUpdates(false),

mCurrentChildren(LayerVector::StateSet::Current),

mDrawingChildren(LayerVector::StateSet::Drawing) {

mCurrentCrop.makeInvalid();

uint32_t layerFlags = 0;

if (flags & ISurfaceComposerClient::eHidden) layerFlags |= layer_state_t::eLayerHidden;

if (flags & ISurfaceComposerClient::eOpaque) layerFlags |= layer_state_t::eLayerOpaque;

if (flags & ISurfaceComposerClient::eSecure) layerFlags |= layer_state_t::eLayerSecure;

mName = name;

mTransactionName = String8("TX - ") + mName;

mCurrentState.active.w = w;

mCurrentState.active.h = h;

mCurrentState.flags = layerFlags;

mCurrentState.active.transform.set(0, 0);

mCurrentState.crop.makeInvalid();

mCurrentState.finalCrop.makeInvalid();

mCurrentState.requestedFinalCrop = mCurrentState.finalCrop;

mCurrentState.requestedCrop = mCurrentState.crop;

mCurrentState.z = 0;

mCurrentState.color.a = 1.0f;

mCurrentState.layerStack = 0;

mCurrentState.sequence = 0;

mCurrentState.requested = mCurrentState.active;

mCurrentState.appId = 0;

mCurrentState.type = 0;

// drawing state & current state are identical

mDrawingState = mCurrentState;

const auto& hwc = flinger->getHwComposer();

const auto& activeConfig = hwc.getActiveConfig(HWC_DISPLAY_PRIMARY);

nsecs_t displayPeriod = activeConfig->getVsyncPeriod();

mFrameTracker.setDisplayRefreshPeriod(displayPeriod);

CompositorTiming compositorTiming;

flinger->getCompositorTiming(&compositorTiming);

mFrameEventHistory.initializeCompositorTiming(compositorTiming);

}

只需要知道它持有了HWC,flinger等對象即可。

BufferLayer的初始化

BufferLayer::BufferLayer(SurfaceFlinger* flinger, const sp& client, const String8& name,

uint32_t w, uint32_t h, uint32_t flags)

: Layer(flinger, client, name, w, h, flags),

mConsumer(nullptr),

mTextureName(UINT32_MAX),

mFormat(PIXEL_FORMAT_NONE),

mCurrentScalingMode(NATIVE_WINDOW_SCALING_MODE_FREEZE),

mBufferLatched(false),

mPreviousFrameNumber(0),

mUpdateTexImageFailed(false),

mRefreshPending(false) {

ALOGV("Creating Layer %s", name.string());

mFlinger->getRenderEngine().genTextures(1, &mTextureName);

mTexture.init(Texture::TEXTURE_EXTERNAL, mTextureName);

if (flags & ISurfaceComposerClient::eNonPremultiplied) mPremultipliedAlpha = false;

mCurrentState.requested = mCurrentState.active;

// drawing state & current state are identical

mDrawingState = mCurrentState;

}

這里面做了兩件比較重要的事情:

1.genTextures借助RenderEngine生成名字為mTextureName紋理對象

2.初始化Texture對象,綁定mTextureName。Texture是一個紋理矩陣的輔助類很簡單。

BufferLayer onFirstRef 設置圖元緩沖隊列

僅僅只是有BufferLayer還不夠,需要建立起一套生產(chǎn)者,消費者還需要更多東西。在實例化之后的onFirstRef才是真正的核心。

void BufferLayer::onFirstRef() {

// Creates a custom BufferQueue for SurfaceFlingerConsumer to use

sp producer;

sp consumer;

BufferQueue::createBufferQueue(&producer, &consumer, true);

mProducer = new MonitoredProducer(producer, mFlinger, this);

mConsumer = new BufferLayerConsumer(consumer,

mFlinger->getRenderEngine(), mTextureName, this);

mConsumer->setConsumerUsageBits(getEffectiveUsage(0));

mConsumer->setContentsChangedListener(this);

mConsumer->setName(mName);

if (mFlinger->isLayerTripleBufferingDisabled()) {

mProducer->setMaxDequeuedBufferCount(2);

}

const sp hw(mFlinger->getDefaultDisplayDevice());

updateTransformHint(hw);

}

在Layer中,我們明確能看到消費者和生產(chǎn)者字樣。通過BufferQueue::createBufferQueue 創(chuàng)建核心的生產(chǎn)者和消費者之后最后包裝,暴露外面的對象如下:

1.IGraphicBufferProducer 圖元生產(chǎn)者對應MonitoredProducer

2.IGraphicBufferConsumer 圖元消費者對應BufferLayerConsumer

緊接著有一個核心的邏輯,圖元消費者設置了ContentsChangedListener監(jiān)聽,當需要刷新的時候,將會回調(diào)這個接口讓消費者消費。

BufferQueue::createBufferQueue 創(chuàng)建核心的生產(chǎn)者和消費者

void BufferQueue::createBufferQueue(sp* outProducer,

sp* outConsumer,

bool consumerIsSurfaceFlinger) {

sp core(new BufferQueueCore());

sp producer(new BufferQueueProducer(core, consumerIsSurfaceFlinger));

sp consumer(new BufferQueueConsumer(core));

*outProducer = producer;

*outConsumer = consumer;

}

整個核心有3個對象:

1.BufferQueueCore 緩沖隊列

2.BufferQueueProducer 圖元生產(chǎn)者

3.BufferQueueConsumer 圖元消費者

BufferQueueCore 初始化

BufferQueueCore::BufferQueueCore() :

mMutex(),

mIsAbandoned(false),

mConsumerControlledByApp(false),

mConsumerName(getUniqueName()),

mConsumerListener(),

mConsumerUsageBits(0),

mConsumerIsProtected(false),

mConnectedApi(NO_CONNECTED_API),

mLinkedToDeath(),

mConnectedProducerListener(),

mSlots(),

mQueue(),

mFreeSlots(),

mFreeBuffers(),

mUnusedSlots(),

mActiveBuffers(),

mDequeueCondition(),

mDequeueBufferCannotBlock(false),

mDefaultBufferFormat(PIXEL_FORMAT_RGBA_8888),

mDefaultWidth(1),

mDefaultHeight(1),

mDefaultBufferDataSpace(HAL_DATASPACE_UNKNOWN),

mMaxBufferCount(BufferQueueDefs::NUM_BUFFER_SLOTS),

mMaxAcquiredBufferCount(1),

mMaxDequeuedBufferCount(1),

mBufferHasBeenQueued(false),

mFrameCounter(0),

mTransformHint(0),

mIsAllocating(false),

mIsAllocatingCondition(),

mAllowAllocation(true),

mBufferAge(0),

mGenerationNumber(0),

mAsyncMode(false),

mSharedBufferMode(false),

mAutoRefresh(false),

mSharedBufferSlot(INVALID_BUFFER_SLOT),

mSharedBufferCache(Rect::INVALID_RECT, 0, NATIVE_WINDOW_SCALING_MODE_FREEZE,

HAL_DATASPACE_UNKNOWN),

mLastQueuedSlot(INVALID_BUFFER_SLOT),

mUniqueId(getUniqueId())

{

int numStartingBuffers = getMaxBufferCountLocked();

for (int s = 0; s < numStartingBuffers; s++) {

mFreeSlots.insert(s);

}

for (int s = numStartingBuffers; s < BufferQueueDefs::NUM_BUFFER_SLOTS;

s++) {

mUnusedSlots.push_front(s);

}

}

int BufferQueueCore::getMaxBufferCountLocked() const {

int maxBufferCount = mMaxAcquiredBufferCount + mMaxDequeuedBufferCount +

((mAsyncMode || mDequeueBufferCannotBlock) ? 1 : 0);

// limit maxBufferCount by mMaxBufferCount always

maxBufferCount = std::min(mMaxBufferCount, maxBufferCount);

return maxBufferCount;

}

在Core中初始化了一個很重要Slot數(shù)組。我發(fā)現(xiàn)Android系統(tǒng)很喜歡Slot這種設計,rosalloc也是類似的設計。slot我暫時稱為插槽。

能看到在這個插槽中準備了如下大小的當前Layer最大能申請的圖元數(shù)以及最大入隊圖元數(shù),此時兩個同步模式的標志位都為false,因此就實際上maxBufferCount為2。mMaxBufferCount為一個編譯常量64。

因此此時會設置大小為2的mFreeSlot,也就是2個大小空閑插槽。同時設置剩下62個為mUnusedSlots,是不使用的插槽。

這個插槽,我們能夠知道實際就是一個緩沖隊列,等待圖元插進來。

BufferQueueProducer 圖元生產(chǎn)者初始化

class BufferQueueProducer : public BnGraphicBufferProducer,

private IBinder::DeathRecipient

這個對象就是上面IGraphicBufferProducer,因此這個對象會在SF的Layer中存在一個,同時會傳遞給客戶端。

BufferQueueProducer::BufferQueueProducer(const sp& core,

bool consumerIsSurfaceFlinger) :

mCore(core),

mSlots(core->mSlots),

mConsumerName(),

mStickyTransform(0),

mConsumerIsSurfaceFlinger(consumerIsSurfaceFlinger),

mLastQueueBufferFence(Fence::NO_FENCE),

mLastQueuedTransform(0),

mCallbackMutex(),

mNextCallbackTicket(0),

mCurrentCallbackTicket(0),

mCallbackCondition(),

mDequeueTimeout(-1) {}

關(guān)鍵是把當前的Slot傳遞進來。

BufferQueueConsumer 圖元消費者初始化

BufferQueueConsumer::BufferQueueConsumer(const sp& core) :

mCore(core),

mSlots(core->mSlots),

mConsumerName() {}

這里也很簡單,持有了Slot緩沖隊列。接下來看看他的包裹類。

BufferLayerConsumer 初始化

BufferLayerConsumer::BufferLayerConsumer(const sp& bq,

RE::RenderEngine& engine, uint32_t tex, Layer* layer)

: ConsumerBase(bq, false),

mCurrentCrop(Rect::EMPTY_RECT),

mCurrentTransform(0),

mCurrentScalingMode(NATIVE_WINDOW_SCALING_MODE_FREEZE),

mCurrentFence(Fence::NO_FENCE),

mCurrentTimestamp(0),

mCurrentDataSpace(ui::Dataspace::UNKNOWN),

mCurrentFrameNumber(0),

mCurrentTransformToDisplayInverse(false),

mCurrentSurfaceDamage(),

mCurrentApi(0),

mDefaultWidth(1),

mDefaultHeight(1),

mFilteringEnabled(true),

mRE(engine),

mTexName(tex),

mLayer(layer),

mCurrentTexture(BufferQueue::INVALID_BUFFER_SLOT) {

memcpy(mCurrentTransformMatrix, mtxIdentity.asArray(), sizeof(mCurrentTransformMatrix));

mConsumer->setConsumerUsageBits(DEFAULT_USAGE_FLAGS);

}

它除了持有一個IGraphicBufferConsumer之外,還初始化了一個類型為mat4的mtxIdentity矩陣。如果熟悉著色器語言就知道這個的含義。它就是一個4*4矩陣。

class BufferLayerConsumer : public ConsumerBase

可以看到他是繼承了ConsumerBase,看看ConsumerBase初始化做了什么。

ConsumerBase 初始化

ConsumerBase::ConsumerBase(const sp& bufferQueue, bool controlledByApp) :

mAbandoned(false),

mConsumer(bufferQueue),

mPrevFinalReleaseFence(Fence::NO_FENCE) {

// Choose a name using the PID and a process-unique ID.

mName = String8::format("unnamed-%d-%d", getpid(), createProcessUniqueId());

wp listener = static_cast(this);

sp proxy = new BufferQueue::ProxyConsumerListener(listener);

status_t err = mConsumer->consumerConnect(proxy, controlledByApp);

if (err != NO_ERROR) {

...

} else {

mConsumer->setConsumerName(mName);

}

}

在ConsumerBase初始化中把當前這個對象轉(zhuǎn)化為ConsumerListener,因為它繼承了ConsumerListener。同時mConsumer就是IGraphicBufferConsumer也就是上面的BufferQueueConsumer對象。把當前對象封裝成IConsumerListener,調(diào)用了consumerConnect注冊監(jiān)聽,把行為鏈接到真正的消費者中。

BufferQueueConsumer consumerConnect

virtual status_t consumerConnect(const sp& consumer,

bool controlledByApp) {

return connect(consumer, controlledByApp);

}

status_t BufferQueueConsumer::connect(

const sp& consumerListener, bool controlledByApp) {

...

Mutex::Autolock lock(mCore->mMutex);

if (mCore->mIsAbandoned) {

...

return NO_INIT;

}

mCore->mConsumerListener = consumerListener;

mCore->mConsumerControlledByApp = controlledByApp;

return NO_ERROR;

}

此時就在BufferQueueCore中設置了消費者監(jiān)聽回調(diào)。

BufferLayerConsumer setContentsChangedListener

接下來BufferLayerConsumer還需要注冊一個新的監(jiān)聽是關(guān)于內(nèi)容發(fā)生了變化也界面需要刷新的監(jiān)聽。

文件:/frameworks/native/services/surfaceflinger/BufferLayerConsumer.cpp

void BufferLayerConsumer::setContentsChangedListener(const wp& listener) {

setFrameAvailableListener(listener);

Mutex::Autolock lock(mMutex);

mContentsChangedListener = listener;

}

此時會調(diào)用ConsumeBase的setFrameAvailableListener

ConsumeBase setFrameAvailableListener

void ConsumerBase::setFrameAvailableListener(

const wp& listener) {

Mutex::Autolock lock(mFrameAvailableMutex);

mFrameAvailableListener = listener;

}

這樣就完成了整個監(jiān)聽的循環(huán)。類的嵌套太多,讓我畫一張UML圖來整理下。

Layer與緩沖隊列的設計.png

總結(jié)一句話就是,因為FrameAvailableListener最終進入到BufferQueueCore中。當生產(chǎn)者生產(chǎn)了一個圖元的時候就會從core中獲取FrameAvailableListener調(diào)用監(jiān)聽,進入到ConsumeBase中,進一步的回調(diào)到BufferLayer中。最后到BufferLayer和SF執(zhí)行后面的繪制步驟。

addClientLayer

status_t SurfaceFlinger::addClientLayer(const sp& client,

const sp& handle,

const sp& gbc,

const sp& lbc,

const sp& parent)

{

{

Mutex::Autolock _l(mStateLock);

...

if (parent == nullptr) {

mCurrentState.layersSortedByZ.add(lbc);

} else {

if (parent->isPendingRemoval()) {

ALOGE("addClientLayer called with a removed parent");

return NAME_NOT_FOUND;

}

parent->addChild(lbc);

}

if (gbc != nullptr) {

mGraphicBufferProducerList.insert(IInterface::asBinder(gbc).get());

...

}

mLayersAdded = true;

mNumLayers++;

}

client->attachLayer(handle, lbc);

return NO_ERROR;

}

如果當前的圖層Layer沒有任何父Layer,則存儲在mCurrentState的layersSortedByZ,也就是Z軸的最末尾,也就是當前渲染圖層的最上層。如果有就綁定給父Layer。

最后生產(chǎn)者隊列需要插入到mGraphicBufferProducerList全局集合中。

最后調(diào)用client的attachLayer把Client的Binder和生產(chǎn)者綁定起來。

Client attachLayer

void Client::attachLayer(const sp& handle, const sp& layer)

{

Mutex::Autolock _l(mLock);

mLayers.add(handle, layer);

}

這樣也同時存儲在Client上。

SurfaceControl 的初始化

經(jīng)過上面的流程,完成了整一套的圖元緩沖隊列的構(gòu)造。現(xiàn)在讓我們回到SurfaceComposerClient中,繼續(xù)SurfaceControl的初始化。

文件:/frameworks/native/libs/gui/SurfaceControl.cpp

SurfaceControl::SurfaceControl(

const sp& client,

const sp& handle,

const sp& gbp,

bool owned)

: mClient(client), mHandle(handle), mGraphicBufferProducer(gbp), mOwned(owned)

{

}

此時SurfaceControl同時持有了Client的Binder,圖元生產(chǎn)者以及SurfaceComposerClient服務。

SurfaceControl 生產(chǎn)Surface

當SurfaceControl有了之后,需要繪制像素,是繪制在SurfaceControl生成的Surface上。

sp SurfaceControl::generateSurfaceLocked() const

{

// This surface is always consumed by SurfaceFlinger, so the

// producerControlledByApp value doesn't matter; using false.

mSurfaceData = new Surface(mGraphicBufferProducer, false);

return mSurfaceData;

}

sp SurfaceControl::getSurface() const

{

Mutex::Autolock _l(mLock);

if (mSurfaceData == 0) {

return generateSurfaceLocked();

}

return mSurfaceData;

}

其實就是把圖元生產(chǎn)者設置到Surface中。

Surface的初始化

Surface才是面向我們客戶端,開發(fā)者的繪制圖層。我們不會直接操作圖元生產(chǎn)者。一切的事情都交給Surface來發(fā)送。這里面包含了很重要的圖元發(fā)送等邏輯。

class Surface

: public ANativeObjectBase

可以看到繼承了一個ANativeObjectBase模版類,這個模版類只是處理引用計數(shù),不過設計的很精巧,可以學習。

template

typename NATIVE_BASE = android_native_base_t>

class ANativeObjectBase : public NATIVE_TYPE, public REF

{

public:

// Disambiguate between the incStrong in REF and NATIVE_TYPE

void incStrong(const void* id) const {

REF::incStrong(id);

}

void decStrong(const void* id) const {

REF::decStrong(id);

}

protected:

typedef ANativeObjectBase BASE;

ANativeObjectBase() : NATIVE_TYPE(), REF() {

NATIVE_TYPE::common.incRef = incRef;

NATIVE_TYPE::common.decRef = decRef;

}

static inline TYPE* getSelf(NATIVE_TYPE* self) {

return static_cast(self);

}

static inline TYPE const* getSelf(NATIVE_TYPE const* self) {

return static_cast(self);

}

static inline TYPE* getSelf(NATIVE_BASE* base) {

return getSelf(reinterpret_cast(base));

}

static inline TYPE const * getSelf(NATIVE_BASE const* base) {

return getSelf(reinterpret_cast(base));

}

static void incRef(NATIVE_BASE* base) {

ANativeObjectBase* self = getSelf(base);

self->incStrong(self);

}

static void decRef(NATIVE_BASE* base) {

ANativeObjectBase* self = getSelf(base);

self->decStrong(self);

}

};

使用了模版了決定了繼承關(guān)系。換句話說其實相當于一個Hook,在不改變設計結(jié)構(gòu)下,增加了引用的特性。

ANativeWindow 結(jié)構(gòu)體

struct ANativeWindow

{

#ifdef __cplusplus

ANativeWindow()

: flags(0), minSwapInterval(0), maxSwapInterval(0), xdpi(0), ydpi(0)

{

common.magic = ANDROID_NATIVE_WINDOW_MAGIC;

common.version = sizeof(ANativeWindow);

memset(common.reserved, 0, sizeof(common.reserved));

}

/* Implement the methods that sp expects so that it

can be used to automatically refcount ANativeWindow's. */

void incStrong(const void* /*id*/) const {

common.incRef(const_cast(&common));

}

void decStrong(const void* /*id*/) const {

common.decRef(const_cast(&common));

}

#endif

struct android_native_base_t common;

/* flags describing some attributes of this surface or its updater */

const uint32_t flags;

/* min swap interval supported by this updated */

const int minSwapInterval;

/* max swap interval supported by this updated */

const int maxSwapInterval;

/* horizontal and vertical resolution in DPI */

const float xdpi;

const float ydpi;

intptr_t oem[4];

int (*setSwapInterval)(struct ANativeWindow* window,

int interval);

int (*dequeueBuffer_DEPRECATED)(struct ANativeWindow* window,

struct ANativeWindowBuffer** buffer);

int (*lockBuffer_DEPRECATED)(struct ANativeWindow* window,

struct ANativeWindowBuffer* buffer);

int (*queueBuffer_DEPRECATED)(struct ANativeWindow* window,

struct ANativeWindowBuffer* buffer);

int (*query)(const struct ANativeWindow* window,

int what, int* value);

int (*perform)(struct ANativeWindow* window,

int operation, ... );

int (*cancelBuffer_DEPRECATED)(struct ANativeWindow* window,

struct ANativeWindowBuffer* buffer);

int (*dequeueBuffer)(struct ANativeWindow* window,

struct ANativeWindowBuffer** buffer, int* fenceFd);

int (*queueBuffer)(struct ANativeWindow* window,

struct ANativeWindowBuffer* buffer, int fenceFd);

int (*cancelBuffer)(struct ANativeWindow* window,

struct ANativeWindowBuffer* buffer, int fenceFd);

};

實際上,我們就能看到不少線索,別看叫做Window,實際上ANativeWindow不是作為圖元存儲的結(jié)構(gòu)體,能從結(jié)構(gòu)體中的方法指針看得出,實際上ANativeWindow是用來控制ANativeWindowBuffer 像素緩存的。大致上有四個操作,queueBuffer 圖元入隊,dequeueBuffer 圖元出隊,lockBuffer 圖元鎖定,query圖元查找等。當然還有setSwapInterval交換緩沖。

我們再轉(zhuǎn)過頭看看整個Surface的初始化。

Surface::Surface(const sp& bufferProducer, bool controlledByApp)

: mGraphicBufferProducer(bufferProducer),

mCrop(Rect::EMPTY_RECT),

mBufferAge(0),

mGenerationNumber(0),

mSharedBufferMode(false),

mAutoRefresh(false),

mSharedBufferSlot(BufferItem::INVALID_BUFFER_SLOT),

mSharedBufferHasBeenQueued(false),

mQueriedSupportedTimestamps(false),

mFrameTimestampsSupportsPresent(false),

mEnableFrameTimestamps(false),

mFrameEventHistory(std::make_unique()) {

// Initialize the ANativeWindow function pointers.

ANativeWindow::setSwapInterval = hook_setSwapInterval;

ANativeWindow::dequeueBuffer = hook_dequeueBuffer;

ANativeWindow::cancelBuffer = hook_cancelBuffer;

ANativeWindow::queueBuffer = hook_queueBuffer;

ANativeWindow::query = hook_query;

ANativeWindow::perform = hook_perform;

ANativeWindow::dequeueBuffer_DEPRECATED = hook_dequeueBuffer_DEPRECATED;

ANativeWindow::cancelBuffer_DEPRECATED = hook_cancelBuffer_DEPRECATED;

ANativeWindow::lockBuffer_DEPRECATED = hook_lockBuffer_DEPRECATED;

ANativeWindow::queueBuffer_DEPRECATED = hook_queueBuffer_DEPRECATED;

const_cast(ANativeWindow::minSwapInterval) = 0;

const_cast(ANativeWindow::maxSwapInterval) = 1;

mReqWidth = 0;

mReqHeight = 0;

mReqFormat = 0;

mReqUsage = 0;

mTimestamp = NATIVE_WINDOW_TIMESTAMP_AUTO;

mDataSpace = Dataspace::UNKNOWN;

mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE;

mTransform = 0;

mStickyTransform = 0;

mDefaultWidth = 0;

mDefaultHeight = 0;

mUserWidth = 0;

mUserHeight = 0;

mTransformHint = 0;

mConsumerRunningBehind = false;

mConnectedToCpu = false;

mProducerControlledByApp = controlledByApp;

mSwapIntervalZero = false;

}

在Surface初始化的時候,同時為每一個方法指針都賦值了,讓Surface擁有了操作的能力。

總結(jié)

關(guān)于BufferQueue 圖元緩沖隊列的初始化就到這里。在這個初始化流程中,初步的搭建了整個生產(chǎn)者-消費者模型。剩下的步驟就是生產(chǎn)圖元,寫入生產(chǎn)者,生產(chǎn)者把數(shù)據(jù)寫進緩沖隊列,通知消費者進行消費。

后面的步驟,我們慢慢再聊。老規(guī)矩用一幅圖總結(jié)整個流程。

SF的生產(chǎn)者消費者模型.png

總結(jié)一遍流程,本文總結(jié)了開機動畫1-5的步驟。

getBuiltInDisplay 從BuiltInDisplay數(shù)組中獲取當前的屏幕

getDisplayInfo 從SF中獲取活躍的屏幕信息

createSurface 通過SF的Client對象創(chuàng)建了一個圖元生產(chǎn)者,并且賦值給SurfaceControl中。

setLayer 設置layer 圖層在Z軸上的層級

getSurface 通過SurfaceControl生產(chǎn)Surface對象,真正進行交互是Surface對象。

有了這些基礎之后,下一篇文章就來聊聊,Android在OpenGL es上的封裝。

總結(jié)

以上是生活随笔為你收集整理的android 队列执行动画,Android 重学系列 渲染图层-图元缓冲队列初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

日日橹狠狠爱欧美视频 | 国产激情一区二区三区 | 乌克兰少妇xxxx做受 | 亚洲中文字幕在线无码一区二区 | √8天堂资源地址中文在线 | 久久精品国产日本波多野结衣 | 亚洲熟妇色xxxxx欧美老妇y | 人妻少妇被猛烈进入中文字幕 | 欧洲vodafone精品性 | 中文亚洲成a人片在线观看 | 午夜肉伦伦影院 | 精品人妻人人做人人爽 | 强伦人妻一区二区三区视频18 | 女人被男人躁得好爽免费视频 | 牲欲强的熟妇农村老妇女 | 亚洲欧洲无卡二区视頻 | 亚洲人成影院在线观看 | 亚洲色www成人永久网址 | 欧美性生交xxxxx久久久 | 在线观看欧美一区二区三区 | 99久久精品国产一区二区蜜芽 | 在线成人www免费观看视频 | 亚洲精品一区二区三区在线观看 | 天海翼激烈高潮到腰振不止 | 又色又爽又黄的美女裸体网站 | 久久久久久久人妻无码中文字幕爆 | 亚洲色在线无码国产精品不卡 | 亚洲熟妇色xxxxx欧美老妇 | 精品国产一区二区三区四区 | 人人澡人人透人人爽 | 纯爱无遮挡h肉动漫在线播放 | 欧美日韩色另类综合 | 九九久久精品国产免费看小说 | 日韩无套无码精品 | 人人妻人人澡人人爽人人精品 | 真人与拘做受免费视频一 | 领导边摸边吃奶边做爽在线观看 | 丰满人妻一区二区三区免费视频 | 亚洲日韩精品欧美一区二区 | 午夜熟女插插xx免费视频 | 久久综合九色综合欧美狠狠 | 天天拍夜夜添久久精品大 | 欧美日韩久久久精品a片 | 亚洲一区二区三区偷拍女厕 | 成人亚洲精品久久久久 | 免费观看激色视频网站 | 狂野欧美激情性xxxx | 中文字幕中文有码在线 | 国产免费久久精品国产传媒 | 国产三级久久久精品麻豆三级 | 国产成人无码午夜视频在线观看 | 久久99精品国产麻豆 | 亚洲小说图区综合在线 | 亚洲色欲久久久综合网东京热 | 中文字幕精品av一区二区五区 | 中文字幕av无码一区二区三区电影 | 波多野结衣乳巨码无在线观看 | 丰满人妻精品国产99aⅴ | 男人和女人高潮免费网站 | 久久99精品国产麻豆蜜芽 | 久久久久成人片免费观看蜜芽 | 欧美国产亚洲日韩在线二区 | 欧美熟妇另类久久久久久不卡 | 久久无码专区国产精品s | 久久亚洲中文字幕精品一区 | 无码人妻精品一区二区三区下载 | 99riav国产精品视频 | 国内精品九九久久久精品 | 欧美野外疯狂做受xxxx高潮 | 欧美日韩久久久精品a片 | a片免费视频在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产午夜无码视频在线观看 | 亚洲精品久久久久久一区二区 | 亚洲综合无码一区二区三区 | 国产成人一区二区三区在线观看 | 欧洲熟妇色 欧美 | 人妻夜夜爽天天爽三区 | 亚洲a无码综合a国产av中文 | 麻豆果冻传媒2021精品传媒一区下载 | 国产成人精品无码播放 | 97无码免费人妻超级碰碰夜夜 | 欧美日韩综合一区二区三区 | 大肉大捧一进一出视频出来呀 | 无码国产色欲xxxxx视频 | 黑人粗大猛烈进出高潮视频 | 久久99精品国产.久久久久 | 欧美大屁股xxxxhd黑色 | 欧美xxxx黑人又粗又长 | 精品国产一区av天美传媒 | 亚洲自偷自偷在线制服 | 午夜丰满少妇性开放视频 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 丝袜足控一区二区三区 | 天天综合网天天综合色 | 一个人看的视频www在线 | 亚洲人成影院在线观看 | 激情亚洲一区国产精品 | 2019午夜福利不卡片在线 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | av在线亚洲欧洲日产一区二区 | 色一情一乱一伦一区二区三欧美 | 亚洲精品一区三区三区在线观看 | 久久无码专区国产精品s | 国产成人无码一二三区视频 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲精品国偷拍自产在线麻豆 | 午夜福利一区二区三区在线观看 | 激情爆乳一区二区三区 | 亚洲精品成人av在线 | 亚洲另类伦春色综合小说 | 国产av久久久久精东av | 精品国产青草久久久久福利 | 国产成人精品视频ⅴa片软件竹菊 | 免费观看又污又黄的网站 | 亚洲小说春色综合另类 | 波多野结衣一区二区三区av免费 | 装睡被陌生人摸出水好爽 | 中文字幕无码人妻少妇免费 | 青草青草久热国产精品 | a片免费视频在线观看 | 亚洲伊人久久精品影院 | 色综合视频一区二区三区 | 成人aaa片一区国产精品 | 亚洲日本在线电影 | 中文字幕+乱码+中文字幕一区 | 亚洲国产精品久久久久久 | 国产高潮视频在线观看 | 成人毛片一区二区 | 中国女人内谢69xxxx | 成人性做爰aaa片免费看 | 国产乱人伦av在线无码 | 亚洲第一网站男人都懂 | 欧美日韩色另类综合 | 久久成人a毛片免费观看网站 | 激情内射亚州一区二区三区爱妻 | 无码人妻少妇伦在线电影 | 亚洲一区二区三区四区 | 国产激情无码一区二区 | 久久精品中文闷骚内射 | 亚洲日韩中文字幕在线播放 | 18禁止看的免费污网站 | 免费人成在线视频无码 | 日韩av激情在线观看 | 99久久无码一区人妻 | 成人aaa片一区国产精品 | 乱人伦人妻中文字幕无码久久网 | 成人无码影片精品久久久 | 日韩欧美中文字幕在线三区 | 亚洲va欧美va天堂v国产综合 | 未满小14洗澡无码视频网站 | 久久无码中文字幕免费影院蜜桃 | 夜先锋av资源网站 | 欧美一区二区三区视频在线观看 | 国产三级久久久精品麻豆三级 | 日韩欧美中文字幕公布 | 国产成人综合在线女婷五月99播放 | 熟妇人妻激情偷爽文 | 欧美日韩亚洲国产精品 | 欧美刺激性大交 | 日欧一片内射va在线影院 | 久热国产vs视频在线观看 | 国产绳艺sm调教室论坛 | 99精品视频在线观看免费 | 日本精品久久久久中文字幕 | 久久亚洲日韩精品一区二区三区 | 国产两女互慰高潮视频在线观看 | a片在线免费观看 | 日本精品久久久久中文字幕 | 亚洲精品成人av在线 | 国产电影无码午夜在线播放 | 欧美成人免费全部网站 | 日本在线高清不卡免费播放 | 麻豆国产丝袜白领秘书在线观看 | 大地资源网第二页免费观看 | 97久久超碰中文字幕 | 久久久久久久女国产乱让韩 | 色婷婷香蕉在线一区二区 | 亚洲自偷精品视频自拍 | 久久zyz资源站无码中文动漫 | 日韩亚洲欧美中文高清在线 | 大色综合色综合网站 | 国产精品美女久久久久av爽李琼 | 国内揄拍国内精品人妻 | 桃花色综合影院 | 国产莉萝无码av在线播放 | 欧美性生交活xxxxxdddd | 亲嘴扒胸摸屁股激烈网站 | 久久久久久久久888 | 人妻夜夜爽天天爽三区 | 久久亚洲a片com人成 | 亚洲第一无码av无码专区 | 国产成人久久精品流白浆 | 欧美丰满老熟妇xxxxx性 | 成人欧美一区二区三区黑人 | 精品国产精品久久一区免费式 | 亚洲日本va午夜在线电影 | 色爱情人网站 | 亚洲成av人片在线观看无码不卡 | 国产成人精品三级麻豆 | 天天av天天av天天透 | 国产69精品久久久久app下载 | 网友自拍区视频精品 | aⅴ亚洲 日韩 色 图网站 播放 | 十八禁真人啪啪免费网站 | 秋霞特色aa大片 | 亚洲成av人片在线观看无码不卡 | 亚洲色成人中文字幕网站 | 国产农村妇女高潮大叫 | 人妻人人添人妻人人爱 | 99久久精品无码一区二区毛片 | 久热国产vs视频在线观看 | 国产精品美女久久久久av爽李琼 | 性色欲网站人妻丰满中文久久不卡 | 高潮毛片无遮挡高清免费 | 亚洲热妇无码av在线播放 | 一区二区三区高清视频一 | 极品尤物被啪到呻吟喷水 | 亚洲欧洲无卡二区视頻 | 蜜桃视频韩日免费播放 | 精品国产一区二区三区四区在线看 | 欧美人与禽猛交狂配 | 亚洲无人区午夜福利码高清完整版 | 日韩av无码中文无码电影 | 国产真实伦对白全集 | 美女扒开屁股让男人桶 | 露脸叫床粗话东北少妇 | 亚洲欧美中文字幕5发布 | а√资源新版在线天堂 | 爆乳一区二区三区无码 | 国产午夜无码精品免费看 | 亚洲一区二区三区四区 | 在线播放免费人成毛片乱码 | 熟妇人妻中文av无码 | 国产精品对白交换视频 | 免费无码的av片在线观看 | 色五月丁香五月综合五月 | 亚洲乱亚洲乱妇50p | 日本欧美一区二区三区乱码 | 亚洲人亚洲人成电影网站色 | 日韩精品a片一区二区三区妖精 | 中国女人内谢69xxxx | 亚洲色www成人永久网址 | 日韩精品无码免费一区二区三区 | 欧美zoozzooz性欧美 | 亚洲 日韩 欧美 成人 在线观看 | 国产在线一区二区三区四区五区 | 一区二区三区高清视频一 | 日产国产精品亚洲系列 | 亚洲乱码国产乱码精品精 | 兔费看少妇性l交大片免费 | 天堂а√在线地址中文在线 | 国产性生大片免费观看性 | 一二三四在线观看免费视频 | 亚洲一区二区三区含羞草 | 精品人妻av区 | 久久无码人妻影院 | 国产口爆吞精在线视频 | 亚洲色偷偷偷综合网 | 亚洲国精产品一二二线 | 波多野结衣av在线观看 | 色老头在线一区二区三区 | 亚洲精品一区二区三区大桥未久 | 国产精品亚洲五月天高清 | 荡女精品导航 | 久久精品国产一区二区三区肥胖 | 成人欧美一区二区三区黑人免费 | 久久久国产精品无码免费专区 | 久久综合给久久狠狠97色 | 国产真实伦对白全集 | 日韩 欧美 动漫 国产 制服 | 欧美一区二区三区视频在线观看 | 久久精品国产日本波多野结衣 | 在线天堂新版最新版在线8 | 人妻夜夜爽天天爽三区 | 精品一区二区不卡无码av | 3d动漫精品啪啪一区二区中 | 精品国偷自产在线视频 | 欧美日本精品一区二区三区 | 一个人看的视频www在线 | 亚洲性无码av中文字幕 | 久久久久成人精品免费播放动漫 | 成人精品视频一区二区 | 亚洲精品欧美二区三区中文字幕 | 18禁黄网站男男禁片免费观看 | 国内精品人妻无码久久久影院 | 99精品视频在线观看免费 | 国内丰满熟女出轨videos | 狠狠cao日日穞夜夜穞av | 日本成熟视频免费视频 | 玩弄人妻少妇500系列视频 | 亚洲s码欧洲m码国产av | 蜜臀aⅴ国产精品久久久国产老师 | 女人高潮内射99精品 | 欧美黑人乱大交 | 午夜熟女插插xx免费视频 | 国产人妻精品午夜福利免费 | 日日摸日日碰夜夜爽av | 国产乱人无码伦av在线a | 国产精品人妻一区二区三区四 | 内射爽无广熟女亚洲 | 欧美国产亚洲日韩在线二区 | 久久精品国产99精品亚洲 | 精品偷自拍另类在线观看 | 中文字幕无码av波多野吉衣 | 国产精品内射视频免费 | 国产精品va在线观看无码 | 四虎国产精品免费久久 | 日日摸夜夜摸狠狠摸婷婷 | 又大又黄又粗又爽的免费视频 | 骚片av蜜桃精品一区 | 欧美成人高清在线播放 | 久久久无码中文字幕久... | 欧美性猛交xxxx富婆 | 中文字幕无码乱人伦 | 精品国偷自产在线 | 亚洲成av人片天堂网无码】 | 国产精品无码mv在线观看 | 国产黑色丝袜在线播放 | 免费人成在线视频无码 | 色老头在线一区二区三区 | 人人澡人人透人人爽 | 亚洲色大成网站www国产 | 无码av中文字幕免费放 | 欧美老熟妇乱xxxxx | 天堂无码人妻精品一区二区三区 | 巨爆乳无码视频在线观看 | 熟女俱乐部五十路六十路av | 国产精品亚洲专区无码不卡 | 两性色午夜视频免费播放 | 久久精品无码一区二区三区 | 国产精品亚洲综合色区韩国 | 国产精品高潮呻吟av久久 | 无码国产激情在线观看 | 水蜜桃色314在线观看 | 久久国产自偷自偷免费一区调 | 99精品久久毛片a片 | 男人的天堂2018无码 | 18禁止看的免费污网站 | 人人妻人人藻人人爽欧美一区 | 任你躁国产自任一区二区三区 | 欧美熟妇另类久久久久久不卡 | 免费国产黄网站在线观看 | 国产亚洲精品精品国产亚洲综合 | 久久久亚洲欧洲日产国码αv | 无码国产乱人伦偷精品视频 | 久久久亚洲欧洲日产国码αv | 任你躁国产自任一区二区三区 | 久久婷婷五月综合色国产香蕉 | 精品国产一区二区三区av 性色 | 日本大乳高潮视频在线观看 | 免费播放一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | av在线亚洲欧洲日产一区二区 | 丰满人妻精品国产99aⅴ | 国产莉萝无码av在线播放 | 婷婷丁香五月天综合东京热 | 午夜精品一区二区三区在线观看 | 亚洲人成人无码网www国产 | 精品无码国产一区二区三区av | aa片在线观看视频在线播放 | 亚洲成a人片在线观看日本 | 国产亚洲精品精品国产亚洲综合 | 澳门永久av免费网站 | 性做久久久久久久久 | 欧美日韩一区二区三区自拍 | 久久久www成人免费毛片 | 亚洲欧美中文字幕5发布 | 人人妻在人人 | 精品午夜福利在线观看 | 精品无码成人片一区二区98 | 丁香啪啪综合成人亚洲 | 最近免费中文字幕中文高清百度 | 在线精品国产一区二区三区 | 精品国产乱码久久久久乱码 | 久久精品中文字幕一区 | 国产精品国产自线拍免费软件 | 国产小呦泬泬99精品 | 亚洲精品一区二区三区在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 国产一区二区三区影院 | 欧美日韩一区二区三区自拍 | 亚洲成av人综合在线观看 | 国产绳艺sm调教室论坛 | 波多野结衣高清一区二区三区 | 无码纯肉视频在线观看 | 亚洲春色在线视频 | 精品人人妻人人澡人人爽人人 | 欧美精品一区二区精品久久 | 久久综合给久久狠狠97色 | 久久久久久久久蜜桃 | 亚拍精品一区二区三区探花 | 国产人妻精品一区二区三区不卡 | 色情久久久av熟女人妻网站 | 欧美自拍另类欧美综合图片区 | 精品一二三区久久aaa片 | 免费观看又污又黄的网站 | 日韩精品无码一本二本三本色 | 亚洲欧洲日本无在线码 | 黑人巨大精品欧美一区二区 | 亚洲成av人影院在线观看 | 亚洲热妇无码av在线播放 | 亚洲一区二区三区播放 | 乱人伦中文视频在线观看 | 亚洲成a人片在线观看无码3d | 中文毛片无遮挡高清免费 | 久久精品女人天堂av免费观看 | 午夜精品一区二区三区的区别 | 久久久久久九九精品久 | 亚洲色www成人永久网址 | 一二三四在线观看免费视频 | 性史性农村dvd毛片 | 狠狠色色综合网站 | 亚洲日韩av片在线观看 | 丰满人妻翻云覆雨呻吟视频 | 老司机亚洲精品影院无码 | 国产精品.xx视频.xxtv | 18黄暴禁片在线观看 | 亚洲第一无码av无码专区 | 免费观看激色视频网站 | 少妇愉情理伦片bd | 无码毛片视频一区二区本码 | 国产精品18久久久久久麻辣 | 欧美人与牲动交xxxx | 亚洲自偷自偷在线制服 | 小鲜肉自慰网站xnxx | 国产精品永久免费视频 | 精品乱码久久久久久久 | 成人三级无码视频在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲人亚洲人成电影网站色 | 久久www免费人成人片 | 日本熟妇乱子伦xxxx | 国产免费无码一区二区视频 | 国精产品一品二品国精品69xx | 国产在线一区二区三区四区五区 | 成人免费视频在线观看 | 天堂久久天堂av色综合 | 成人亚洲精品久久久久软件 | 国产精品美女久久久久av爽李琼 | 亚洲欧美国产精品久久 | 亚洲va欧美va天堂v国产综合 | 窝窝午夜理论片影院 | 精品国产青草久久久久福利 | 99久久人妻精品免费一区 | 午夜福利一区二区三区在线观看 | 亚洲中文字幕乱码av波多ji | 国产无套粉嫩白浆在线 | 亚洲熟妇自偷自拍另类 | 国产特级毛片aaaaaaa高清 | 国产99久久精品一区二区 | 动漫av一区二区在线观看 | 欧美熟妇另类久久久久久不卡 | 午夜福利电影 | 2020久久香蕉国产线看观看 | 麻豆国产人妻欲求不满谁演的 | 精品亚洲韩国一区二区三区 | 精品无码av一区二区三区 | 国产精品人妻一区二区三区四 | 亚洲欧洲中文日韩av乱码 | 日日麻批免费40分钟无码 | 亚洲第一无码av无码专区 | 国产精品成人av在线观看 | 国产精品美女久久久网av | 天天拍夜夜添久久精品 | 综合网日日天干夜夜久久 | 无码人妻少妇伦在线电影 | 国内精品一区二区三区不卡 | 国内综合精品午夜久久资源 | 欧美精品国产综合久久 | 久久综合狠狠综合久久综合88 | 国产成人人人97超碰超爽8 | 亚洲欧美国产精品专区久久 | 国语自产偷拍精品视频偷 | 国产婷婷色一区二区三区在线 | 玩弄中年熟妇正在播放 | 18黄暴禁片在线观看 | 免费视频欧美无人区码 | 天天躁夜夜躁狠狠是什么心态 | 国产极品美女高潮无套在线观看 | 99久久99久久免费精品蜜桃 | 18精品久久久无码午夜福利 | 亚洲一区二区三区无码久久 | 亚洲伊人久久精品影院 | 人人澡人人透人人爽 | 在线 国产 欧美 亚洲 天堂 | 亚洲狠狠色丁香婷婷综合 | 任你躁国产自任一区二区三区 | 国产免费无码一区二区视频 | 成 人 网 站国产免费观看 | 在线成人www免费观看视频 | 初尝人妻少妇中文字幕 | 免费无码av一区二区 | 国产精品久久久久9999小说 | 牲欲强的熟妇农村老妇女视频 | 精品无码一区二区三区爱欲 | 国产精品久久久久久亚洲影视内衣 | 中文字幕av无码一区二区三区电影 | 88国产精品欧美一区二区三区 | 久久人人爽人人人人片 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲国产欧美国产综合一区 | 中文字幕乱码亚洲无线三区 | 搡女人真爽免费视频大全 | 人人妻人人澡人人爽欧美一区 | 国产99久久精品一区二区 | 丰满人妻被黑人猛烈进入 | 日韩av无码一区二区三区 | 在线观看国产一区二区三区 | 女人高潮内射99精品 | 亚洲国产精品久久久天堂 | 国产日产欧产精品精品app | 黑人玩弄人妻中文在线 | 成人一在线视频日韩国产 | 大屁股大乳丰满人妻 | 欧美怡红院免费全部视频 | 2019nv天堂香蕉在线观看 | 人妻与老人中文字幕 | 亚洲日韩av一区二区三区四区 | 国产成人人人97超碰超爽8 | 青青草原综合久久大伊人精品 | 夫妻免费无码v看片 | 成人欧美一区二区三区黑人 | 婷婷色婷婷开心五月四房播播 | 亚洲狠狠婷婷综合久久 | 少妇人妻av毛片在线看 | 亚洲国产一区二区三区在线观看 | 亚洲第一无码av无码专区 | 天天av天天av天天透 | 成在人线av无码免费 | 欧美自拍另类欧美综合图片区 | 玩弄中年熟妇正在播放 | 国产片av国语在线观看 | 成人欧美一区二区三区 | 欧美日韩一区二区综合 | 日本丰满熟妇videos | 精品亚洲韩国一区二区三区 | 伊人久久大香线蕉亚洲 | 精品一区二区三区无码免费视频 | 国产亚av手机在线观看 | www成人国产高清内射 | 日本成熟视频免费视频 | 精品水蜜桃久久久久久久 | 久久天天躁夜夜躁狠狠 | 久久久久成人精品免费播放动漫 | 精品人人妻人人澡人人爽人人 | 中文字幕乱码中文乱码51精品 | 99久久久无码国产精品免费 | 国内揄拍国内精品少妇国语 | 亚洲精品久久久久avwww潮水 | 天天爽夜夜爽夜夜爽 | 精品久久久无码中文字幕 | 国产乱人伦偷精品视频 | 精品少妇爆乳无码av无码专区 | 在线观看国产一区二区三区 | 久久精品国产日本波多野结衣 | 亚洲色欲色欲天天天www | 国产福利视频一区二区 | 亚洲 激情 小说 另类 欧美 | 亚洲一区二区三区播放 | 免费无码午夜福利片69 | 日本一区二区三区免费高清 | 亚洲精品午夜无码电影网 | 夜精品a片一区二区三区无码白浆 | 精品久久久久久亚洲精品 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产精品第一区揄拍无码 | 精品国产国产综合精品 | 久久99精品国产麻豆蜜芽 | 国产亚洲精品久久久久久大师 | 一区二区三区高清视频一 | 一本久道高清无码视频 | 亚洲综合无码久久精品综合 | 国产又爽又猛又粗的视频a片 | 在线播放亚洲第一字幕 | 欧美精品无码一区二区三区 | 国产精品永久免费视频 | 成 人 网 站国产免费观看 | 天天综合网天天综合色 | 九九综合va免费看 | 欧美野外疯狂做受xxxx高潮 | 亚洲七七久久桃花影院 | 久久人人97超碰a片精品 | 一个人看的www免费视频在线观看 | 精品国精品国产自在久国产87 | 国产人妻精品午夜福利免费 | 欧美日本日韩 | 大肉大捧一进一出视频出来呀 | 强开小婷嫩苞又嫩又紧视频 | √天堂资源地址中文在线 | 性色欲网站人妻丰满中文久久不卡 | 国产人成高清在线视频99最全资源 | 夜夜影院未满十八勿进 | 最新国产乱人伦偷精品免费网站 | 午夜不卡av免费 一本久久a久久精品vr综合 | 久久综合网欧美色妞网 | 男女作爱免费网站 | 小泽玛莉亚一区二区视频在线 | 免费看少妇作爱视频 | a片在线免费观看 | 国产av一区二区三区最新精品 | 日本大乳高潮视频在线观看 | 国产精品久久久久久无码 | 国产精品久免费的黄网站 | 日韩 欧美 动漫 国产 制服 | 亚洲精品久久久久avwww潮水 | 日韩亚洲欧美中文高清在线 | 国产av一区二区三区最新精品 | 成熟女人特级毛片www免费 | 日日躁夜夜躁狠狠躁 | 久久亚洲a片com人成 | 无码毛片视频一区二区本码 | 大乳丰满人妻中文字幕日本 | 欧美精品一区二区精品久久 | 黑人玩弄人妻中文在线 | 国产精品无码一区二区三区不卡 | 国产精品久免费的黄网站 | 欧美人妻一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产精品久久久 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲男人av香蕉爽爽爽爽 | 东京无码熟妇人妻av在线网址 | 欧美日本免费一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 欧美乱妇无乱码大黄a片 | 色妞www精品免费视频 | 麻豆人妻少妇精品无码专区 | 少妇人妻av毛片在线看 | 成人性做爰aaa片免费看 | 性欧美熟妇videofreesex | 亚洲国产精品美女久久久久 | 大色综合色综合网站 | 在线а√天堂中文官网 | 亚洲精品国产a久久久久久 | 国产精品久久久久7777 | 久久久www成人免费毛片 | 成人欧美一区二区三区黑人 | 国产精品美女久久久 | 国产香蕉97碰碰久久人人 | 国产高清不卡无码视频 | 亚洲日本在线电影 | 亚洲呦女专区 | 精品无人国产偷自产在线 | 人人妻在人人 | 成人欧美一区二区三区黑人 | 国产美女精品一区二区三区 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲色成人中文字幕网站 | aa片在线观看视频在线播放 | 欧美肥老太牲交大战 | 国产成人无码一二三区视频 | 亚洲日本在线电影 | 人人超人人超碰超国产 | 在线а√天堂中文官网 | 久久久久久亚洲精品a片成人 | 久久熟妇人妻午夜寂寞影院 | 强辱丰满人妻hd中文字幕 | 爆乳一区二区三区无码 | 亚洲爆乳大丰满无码专区 | 亚洲欧洲中文日韩av乱码 | 一二三四社区在线中文视频 | 国产肉丝袜在线观看 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲中文字幕在线无码一区二区 | 免费无码午夜福利片69 | 人妻中文无码久热丝袜 | 欧美日韩人成综合在线播放 | 牲欲强的熟妇农村老妇女视频 | 乱人伦人妻中文字幕无码 | 国产精品高潮呻吟av久久 | 国产一区二区三区影院 | 乱码av麻豆丝袜熟女系列 | 97久久精品无码一区二区 | 国产va免费精品观看 | 撕开奶罩揉吮奶头视频 | 国产午夜无码精品免费看 | 色欲av亚洲一区无码少妇 | 色欲av亚洲一区无码少妇 | 亚洲精品无码国产 | 亚洲aⅴ无码成人网站国产app | 精品无码国产自产拍在线观看蜜 | 国精产品一品二品国精品69xx | 国产亚洲人成a在线v网站 | 久久99精品久久久久久动态图 | 日韩精品乱码av一区二区 | 人人爽人人澡人人高潮 | 久久无码专区国产精品s | 成人aaa片一区国产精品 | 18精品久久久无码午夜福利 | 久久综合狠狠综合久久综合88 | 久久久久亚洲精品男人的天堂 | 国产精品久久久久久久影院 | 亚洲の无码国产の无码步美 | 黄网在线观看免费网站 | 久久伊人色av天堂九九小黄鸭 | 草草网站影院白丝内射 | 日本熟妇大屁股人妻 | 乱人伦人妻中文字幕无码 | 熟妇人妻中文av无码 | 两性色午夜免费视频 | 对白脏话肉麻粗话av | 澳门永久av免费网站 | 国产黄在线观看免费观看不卡 | 精品夜夜澡人妻无码av蜜桃 | 亚洲熟妇色xxxxx欧美老妇 | 欧美35页视频在线观看 | 日本xxxx色视频在线观看免费 | 精品一二三区久久aaa片 | 性啪啪chinese东北女人 | 黑人巨大精品欧美一区二区 | 成人aaa片一区国产精品 | 东京热无码av男人的天堂 | 久久久久成人精品免费播放动漫 | 成年女人永久免费看片 | 一二三四在线观看免费视频 | 精品一区二区三区波多野结衣 | 日韩精品乱码av一区二区 | 精品久久综合1区2区3区激情 | 大地资源中文第3页 | 久久午夜无码鲁丝片 | 中文字幕 人妻熟女 | 久久国产精品萌白酱免费 | 丰满人妻翻云覆雨呻吟视频 | 日韩欧美中文字幕公布 | 曰本女人与公拘交酡免费视频 | 67194成是人免费无码 | 激情爆乳一区二区三区 | 日韩人妻无码一区二区三区久久99 | 性色欲网站人妻丰满中文久久不卡 | 夜夜躁日日躁狠狠久久av | 亚洲成熟女人毛毛耸耸多 | 亚洲国产精品一区二区第一页 | 国产熟妇另类久久久久 | 激情国产av做激情国产爱 | 大肉大捧一进一出视频出来呀 | 亚洲精品欧美二区三区中文字幕 | 日日夜夜撸啊撸 | 国产精品二区一区二区aⅴ污介绍 | 中文字幕乱码中文乱码51精品 | 精品久久久久久人妻无码中文字幕 | 曰韩无码二三区中文字幕 | 亚洲日韩av一区二区三区中文 | 日韩欧美成人免费观看 | 伊人久久大香线蕉av一区二区 | 岛国片人妻三上悠亚 | 无码人妻少妇伦在线电影 | 无遮挡啪啪摇乳动态图 | 美女毛片一区二区三区四区 | 国产精品va在线播放 | 国产精品久久久久9999小说 | 内射爽无广熟女亚洲 | 无人区乱码一区二区三区 | 无套内谢的新婚少妇国语播放 | 日日摸天天摸爽爽狠狠97 | 精品一二三区久久aaa片 | 无码国模国产在线观看 | 青草青草久热国产精品 | 欧美精品无码一区二区三区 | 国产午夜福利亚洲第一 | 国产美女精品一区二区三区 | 国产精品视频免费播放 | 久久久久成人精品免费播放动漫 | 亚洲国产日韩a在线播放 | 国产精华av午夜在线观看 | 亚洲精品成a人在线观看 | 国产精品福利视频导航 | 俺去俺来也在线www色官网 | 国产无套粉嫩白浆在线 | 亚洲另类伦春色综合小说 | 欧美亚洲日韩国产人成在线播放 | 日本欧美一区二区三区乱码 | 成人aaa片一区国产精品 | 性啪啪chinese东北女人 | 波多野结衣av一区二区全免费观看 | 在线成人www免费观看视频 | 扒开双腿吃奶呻吟做受视频 | 女人高潮内射99精品 | 精品乱子伦一区二区三区 | 国产乱人偷精品人妻a片 | 国产精品美女久久久 | 亚洲经典千人经典日产 | 国内精品久久久久久中文字幕 | 亚洲の无码国产の无码步美 | 亚洲精品综合一区二区三区在线 | 又大又硬又黄的免费视频 | 精品国产一区二区三区av 性色 | 国精品人妻无码一区二区三区蜜柚 | 无码人妻丰满熟妇区毛片18 | 亚洲 高清 成人 动漫 | 亚洲区小说区激情区图片区 | 97夜夜澡人人爽人人喊中国片 | aⅴ在线视频男人的天堂 | 中文字幕无码av激情不卡 | 国产网红无码精品视频 | 99久久亚洲精品无码毛片 | 午夜福利试看120秒体验区 | 精品人妻中文字幕有码在线 | 亚洲自偷精品视频自拍 | 蜜桃视频韩日免费播放 | 伦伦影院午夜理论片 | 欧美激情内射喷水高潮 | 又色又爽又黄的美女裸体网站 | 免费看少妇作爱视频 | 丝袜 中出 制服 人妻 美腿 | 国产成人无码av一区二区 | 欧美自拍另类欧美综合图片区 | 高潮毛片无遮挡高清免费视频 | 自拍偷自拍亚洲精品10p | 国内精品九九久久久精品 | 欧美人与禽猛交狂配 | 色婷婷欧美在线播放内射 | 色综合久久久无码中文字幕 | 成 人 网 站国产免费观看 | 国产免费久久精品国产传媒 | 六十路熟妇乱子伦 | 国产精品久久福利网站 | 国精品人妻无码一区二区三区蜜柚 | 无码福利日韩神码福利片 | 67194成是人免费无码 | 中文字幕乱码亚洲无线三区 | 无码人妻黑人中文字幕 | 亚洲熟熟妇xxxx | 人妻少妇精品视频专区 | 清纯唯美经典一区二区 | 国产成人精品一区二区在线小狼 | 亚洲区欧美区综合区自拍区 | 亚洲综合精品香蕉久久网 | 日本高清一区免费中文视频 | 中文字幕av无码一区二区三区电影 | 精品无人国产偷自产在线 | 国产两女互慰高潮视频在线观看 | 国产精品无码永久免费888 | 少妇无码吹潮 | 狂野欧美性猛交免费视频 | 亚洲中文字幕在线观看 | 成人性做爰aaa片免费看 | 六月丁香婷婷色狠狠久久 | 亚洲成a人片在线观看日本 | 女人色极品影院 | 国产激情精品一区二区三区 | 婷婷丁香五月天综合东京热 | 国产av一区二区精品久久凹凸 | 超碰97人人做人人爱少妇 | 人妻插b视频一区二区三区 | www国产亚洲精品久久网站 | 国产成人无码一二三区视频 | √天堂资源地址中文在线 | 久久精品女人的天堂av | 国产精品无码一区二区桃花视频 | 国产绳艺sm调教室论坛 | 欧美色就是色 | 人妻熟女一区 | 亚洲爆乳大丰满无码专区 | 在线成人www免费观看视频 | 亚洲精品一区三区三区在线观看 | 东北女人啪啪对白 | 国产色在线 | 国产 | 九九热爱视频精品 | 亚洲午夜福利在线观看 | 欧美激情内射喷水高潮 | 老司机亚洲精品影院 | 欧美日韩一区二区综合 | 国产精品亚洲综合色区韩国 | 亚洲一区av无码专区在线观看 | 日日摸夜夜摸狠狠摸婷婷 | 日本丰满护士爆乳xxxx | 国产在线aaa片一区二区99 | 夫妻免费无码v看片 | 日日摸日日碰夜夜爽av | 呦交小u女精品视频 | 国产精品久久久久久亚洲影视内衣 | 亚洲色无码一区二区三区 | 亚洲中文字幕在线无码一区二区 | 欧美成人免费全部网站 | 精品欧美一区二区三区久久久 | 亚洲精品午夜国产va久久成人 | 乌克兰少妇xxxx做受 | 天堂亚洲2017在线观看 | 久久久中文字幕日本无吗 | 西西人体www44rt大胆高清 | 国产激情艳情在线看视频 | 亚洲国产精品久久久久久 | 啦啦啦www在线观看免费视频 | 国产精品a成v人在线播放 | 67194成是人免费无码 | 欧美丰满少妇xxxx性 | 一本大道久久东京热无码av | 中文无码成人免费视频在线观看 | 亚洲天堂2017无码中文 | 国产乱人伦偷精品视频 | 少妇高潮喷潮久久久影院 | 无码人妻av免费一区二区三区 | 蜜桃av抽搐高潮一区二区 | 色婷婷av一区二区三区之红樱桃 | 欧美成人家庭影院 | 牛和人交xxxx欧美 | 骚片av蜜桃精品一区 | 99精品无人区乱码1区2区3区 | 日韩精品成人一区二区三区 | 成 人 免费观看网站 | 久久久久成人精品免费播放动漫 | 亚洲国产精品美女久久久久 | 国产香蕉97碰碰久久人人 | 欧美成人免费全部网站 | 人妻夜夜爽天天爽三区 | 久久久亚洲欧洲日产国码αv | 国产精品怡红院永久免费 | 色婷婷香蕉在线一区二区 | 国产绳艺sm调教室论坛 | 撕开奶罩揉吮奶头视频 | 男人扒开女人内裤强吻桶进去 | 任你躁在线精品免费 | 麻豆成人精品国产免费 | 亚洲精品一区二区三区四区五区 | 亚洲va欧美va天堂v国产综合 | 亚洲精品一区二区三区在线观看 | 香蕉久久久久久av成人 | 国产激情艳情在线看视频 | 久久精品视频在线看15 | 欧美丰满熟妇xxxx | 一二三四社区在线中文视频 | 国产精品沙发午睡系列 | 未满小14洗澡无码视频网站 | 乱码午夜-极国产极内射 | 波多野结衣乳巨码无在线观看 | 国产精品99久久精品爆乳 | 色 综合 欧美 亚洲 国产 | 一本加勒比波多野结衣 | 老子影院午夜伦不卡 | 国产人妻久久精品二区三区老狼 | 熟女俱乐部五十路六十路av | 疯狂三人交性欧美 | 老熟女乱子伦 | 亚洲熟妇色xxxxx欧美老妇y | 在线a亚洲视频播放在线观看 | 性欧美videos高清精品 | 2020久久超碰国产精品最新 | 欧美老妇交乱视频在线观看 | 欧美xxxxx精品 | 天天拍夜夜添久久精品大 | 国产va免费精品观看 | 国产精品久久国产精品99 | 国产福利视频一区二区 | 成年女人永久免费看片 | 欧美激情综合亚洲一二区 | 免费男性肉肉影院 | 欧美国产日韩亚洲中文 | 又黄又爽又色的视频 | 久久99国产综合精品 | 在线观看国产午夜福利片 | 97精品国产97久久久久久免费 | 又大又紧又粉嫩18p少妇 | 色一情一乱一伦一视频免费看 | 国产一区二区三区日韩精品 | 国产亚洲精品久久久久久久久动漫 | 给我免费的视频在线观看 | 水蜜桃亚洲一二三四在线 | 蜜臀av无码人妻精品 | 妺妺窝人体色www婷婷 | 久久精品99久久香蕉国产色戒 | 亚洲色欲色欲欲www在线 | 天天做天天爱天天爽综合网 | 日韩精品久久久肉伦网站 | 夜夜影院未满十八勿进 | 日韩人妻系列无码专区 | 国产精品视频免费播放 | 超碰97人人射妻 | 一个人看的视频www在线 | 国产va免费精品观看 | 亚洲成av人综合在线观看 | 女人被男人躁得好爽免费视频 | 国内精品人妻无码久久久影院蜜桃 | 久久久精品456亚洲影院 | 午夜精品一区二区三区在线观看 | 欧美成人午夜精品久久久 | 波多野结衣乳巨码无在线观看 | 中文字幕av无码一区二区三区电影 | 1000部夫妻午夜免费 | 国产亚洲精品精品国产亚洲综合 | 欧美日本免费一区二区三区 | 牲欲强的熟妇农村老妇女视频 | 亚洲国产av精品一区二区蜜芽 | 漂亮人妻洗澡被公强 日日躁 | 国产国语老龄妇女a片 | 西西人体www44rt大胆高清 | 无码人妻黑人中文字幕 | 女人高潮内射99精品 | 人人妻人人澡人人爽精品欧美 | 欧美激情综合亚洲一二区 | 一个人免费观看的www视频 | 国产成人无码区免费内射一片色欲 | 国产69精品久久久久app下载 | 亚洲中文字幕乱码av波多ji | 国精产品一品二品国精品69xx | 久久国产36精品色熟妇 | 亚洲人成网站免费播放 | 成人无码精品一区二区三区 | 久久久亚洲欧洲日产国码αv | 97夜夜澡人人双人人人喊 | 国产亚洲精品精品国产亚洲综合 | 国产精品va在线播放 | 国产精品久久久久久久影院 | 男女作爱免费网站 | 粗大的内捧猛烈进出视频 | 丝袜人妻一区二区三区 | 日韩少妇内射免费播放 | 国产亚洲精品精品国产亚洲综合 | 无码成人精品区在线观看 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲色大成网站www国产 | 波多野结衣aⅴ在线 | 水蜜桃亚洲一二三四在线 | 成熟人妻av无码专区 | 亚洲狠狠色丁香婷婷综合 | 久久久精品456亚洲影院 | 国产无套内射久久久国产 | 欧美变态另类xxxx | 四虎影视成人永久免费观看视频 | 欧美老熟妇乱xxxxx | 久久久久成人精品免费播放动漫 | 女人被男人爽到呻吟的视频 | 国产精品爱久久久久久久 | 一本无码人妻在中文字幕免费 | 日韩精品成人一区二区三区 | 少妇人妻大乳在线视频 | 午夜理论片yy44880影院 | 亚洲成av人影院在线观看 | 人妻无码久久精品人妻 | 亚洲国产精品成人久久蜜臀 | 欧美成人免费全部网站 | 免费人成网站视频在线观看 | 成人无码视频免费播放 | 亚洲精品成人福利网站 | 曰韩少妇内射免费播放 | 亚洲呦女专区 | 国产真实伦对白全集 | 中文字幕人妻无码一区二区三区 | 精品国产一区av天美传媒 | 成熟女人特级毛片www免费 | 亚洲午夜无码久久 | 亚洲の无码国产の无码影院 | 国内少妇偷人精品视频免费 | 色情久久久av熟女人妻网站 | 成人性做爰aaa片免费看不忠 | 国产精品第一国产精品 | 巨爆乳无码视频在线观看 | 精品熟女少妇av免费观看 | 久久久久99精品国产片 | 免费视频欧美无人区码 | 亚洲无人区一区二区三区 | 精品久久久无码中文字幕 | 精品无码成人片一区二区98 | 高清无码午夜福利视频 | 亚洲爆乳无码专区 | 国产人成高清在线视频99最全资源 | 精品国产aⅴ无码一区二区 | av无码久久久久不卡免费网站 | 亚洲日韩一区二区三区 | 久久久久99精品国产片 | 天天做天天爱天天爽综合网 | 自拍偷自拍亚洲精品10p | 国产精品办公室沙发 | 亚洲欧洲中文日韩av乱码 | 99视频精品全部免费免费观看 | 国产精品99久久精品爆乳 | 亚洲性无码av中文字幕 | 福利一区二区三区视频在线观看 | 国产熟妇另类久久久久 | 中文字幕无码视频专区 | 久久久久se色偷偷亚洲精品av | 成人欧美一区二区三区 | 亚洲成av人片天堂网无码】 | 欧美喷潮久久久xxxxx | 六十路熟妇乱子伦 | 激情综合激情五月俺也去 | 老子影院午夜伦不卡 | 国产 精品 自在自线 | 人妻夜夜爽天天爽三区 | 久久久亚洲欧洲日产国码αv | 欧美变态另类xxxx | 日本欧美一区二区三区乱码 | 小泽玛莉亚一区二区视频在线 | 精品夜夜澡人妻无码av蜜桃 | 国产黑色丝袜在线播放 | 人人妻人人澡人人爽人人精品 | 中文字幕人成乱码熟女app | 无码人妻精品一区二区三区下载 | 久久久无码中文字幕久... | 国内精品人妻无码久久久影院蜜桃 | 日本精品人妻无码77777 天堂一区人妻无码 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产婷婷色一区二区三区在线 | 成人无码视频免费播放 | 国产在线精品一区二区高清不卡 | 久久久久成人片免费观看蜜芽 | 国产超碰人人爽人人做人人添 | 日日麻批免费40分钟无码 | 亚洲一区二区三区四区 | 人妻体内射精一区二区三四 | 内射欧美老妇wbb | 精品无码一区二区三区爱欲 | 国产偷国产偷精品高清尤物 | 亚洲欧美日韩成人高清在线一区 | 国产精品久久福利网站 | 欧美丰满老熟妇xxxxx性 | 最近免费中文字幕中文高清百度 | 国产午夜无码精品免费看 | 玩弄少妇高潮ⅹxxxyw | 精品aⅴ一区二区三区 | 国产精品高潮呻吟av久久 | 窝窝午夜理论片影院 | 黑人粗大猛烈进出高潮视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美日韩一区二区综合 | 国产成人无码av在线影院 | 女人被男人爽到呻吟的视频 | 丰满人妻被黑人猛烈进入 | 装睡被陌生人摸出水好爽 | 丰满人妻一区二区三区免费视频 | 野外少妇愉情中文字幕 | 国产精品99爱免费视频 | 亚洲无人区一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 国产在线一区二区三区四区五区 | 欧美 日韩 亚洲 在线 | 中文字幕无码乱人伦 | 少妇性俱乐部纵欲狂欢电影 | 5858s亚洲色大成网站www | 免费无码午夜福利片69 | 日日摸日日碰夜夜爽av | 一二三四社区在线中文视频 | 亚洲国产午夜精品理论片 | 久久国语露脸国产精品电影 | 欧美三级a做爰在线观看 | 亚洲第一无码av无码专区 | 人人妻人人澡人人爽欧美一区九九 | 女人和拘做爰正片视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久亚洲精品成人无码 | 性做久久久久久久久 | 国产片av国语在线观看 | 色欲久久久天天天综合网精品 | 久久久无码中文字幕久... | 国产超级va在线观看视频 | 扒开双腿疯狂进出爽爽爽视频 | 欧美精品在线观看 | 九九综合va免费看 | 欧美xxxxx精品 | 红桃av一区二区三区在线无码av | 日本欧美一区二区三区乱码 | 亚洲国产精品久久久天堂 | 国语精品一区二区三区 | 亚洲欧美国产精品久久 | 亚洲欧美日韩综合久久久 | 国产成人综合美国十次 | 国语自产偷拍精品视频偷 | 日本一卡2卡3卡四卡精品网站 | 国产精品毛片一区二区 | 少妇性俱乐部纵欲狂欢电影 | 欧美怡红院免费全部视频 | 在线播放免费人成毛片乱码 | 国产精品成人av在线观看 | 国产成人人人97超碰超爽8 | 无码人妻少妇伦在线电影 | 麻豆国产人妻欲求不满谁演的 | 日日天日日夜日日摸 | 欧美 亚洲 国产 另类 | 粉嫩少妇内射浓精videos | 精品夜夜澡人妻无码av蜜桃 | 日韩精品成人一区二区三区 | 熟妇人妻激情偷爽文 | 狠狠cao日日穞夜夜穞av | 国产舌乚八伦偷品w中 | 丰满人妻被黑人猛烈进入 | 亚洲精品www久久久 | 日日摸天天摸爽爽狠狠97 | 亚洲码国产精品高潮在线 | 男女爱爱好爽视频免费看 | 无遮挡国产高潮视频免费观看 | 漂亮人妻洗澡被公强 日日躁 | 国精产品一品二品国精品69xx | 午夜理论片yy44880影院 | 中文字幕精品av一区二区五区 | 国产精品.xx视频.xxtv | 国产亚洲美女精品久久久2020 | 欧美自拍另类欧美综合图片区 | 粗大的内捧猛烈进出视频 | 中文字幕久久久久人妻 | 人人妻人人澡人人爽欧美一区 | 暴力强奷在线播放无码 | 国产亚洲精品久久久久久大师 | 亚洲精品国产精品乱码视色 | 久久99国产综合精品 | 无码帝国www无码专区色综合 | 18无码粉嫩小泬无套在线观看 | 奇米影视7777久久精品人人爽 | 成人免费视频在线观看 | 国产午夜亚洲精品不卡下载 | 精品国产一区二区三区四区在线看 | 爆乳一区二区三区无码 | 精品国产一区二区三区四区 | 亚洲s色大片在线观看 | 一个人看的视频www在线 | 国産精品久久久久久久 | 超碰97人人射妻 | 性啪啪chinese东北女人 | 性色欲网站人妻丰满中文久久不卡 | 少妇一晚三次一区二区三区 | 亚洲七七久久桃花影院 | 久久精品人人做人人综合试看 | 亚洲熟熟妇xxxx | 麻豆国产人妻欲求不满 | 国产成人午夜福利在线播放 | 亚洲最大成人网站 | 女人被爽到呻吟gif动态图视看 | 精品欧洲av无码一区二区三区 | 久久精品视频在线看15 | 成人精品天堂一区二区三区 | 在线а√天堂中文官网 | 狠狠噜狠狠狠狠丁香五月 | 巨爆乳无码视频在线观看 | 久久综合九色综合97网 | 亚洲色大成网站www | 天堂无码人妻精品一区二区三区 | 精品乱码久久久久久久 | 久久久精品成人免费观看 | 久久久久成人片免费观看蜜芽 | 俺去俺来也www色官网 | 男女超爽视频免费播放 | 一本久久a久久精品亚洲 | 国产色精品久久人妻 | 国产色精品久久人妻 | 日韩欧美群交p片內射中文 | 无套内谢的新婚少妇国语播放 | 国产精品爱久久久久久久 | 午夜性刺激在线视频免费 | 欧美人与牲动交xxxx | 亚洲 欧美 激情 小说 另类 | 国产xxx69麻豆国语对白 | 亚洲精品成人av在线 | 国内精品久久久久久中文字幕 | 亚无码乱人伦一区二区 | 99久久久国产精品无码免费 | 国产一区二区三区影院 | 色婷婷欧美在线播放内射 | 久久精品视频在线看15 | 亚洲欧美日韩国产精品一区二区 | 久久久久久久久蜜桃 | 免费看少妇作爱视频 | 中文字幕日产无线码一区 | 亚洲国产一区二区三区在线观看 | 性欧美牲交在线视频 | 日欧一片内射va在线影院 | 蜜桃视频插满18在线观看 | 国产片av国语在线观看 | 精品无人国产偷自产在线 | a片免费视频在线观看 | 亚洲成av人在线观看网址 | av人摸人人人澡人人超碰下载 | 97精品人妻一区二区三区香蕉 | 2020久久超碰国产精品最新 | 精品夜夜澡人妻无码av蜜桃 | 精品亚洲成av人在线观看 | 国产免费无码一区二区视频 | 伊人久久大香线蕉午夜 | 亚洲国产精品久久久久久 | 精品无码av一区二区三区 | 久久久中文久久久无码 | 欧美成人免费全部网站 | 日韩成人一区二区三区在线观看 | 国产精品-区区久久久狼 | 国产一精品一av一免费 | 中文字幕无码乱人伦 | 300部国产真实乱 | 亚洲一区二区三区无码久久 | 久久久久成人精品免费播放动漫 | 欧美熟妇另类久久久久久多毛 | 麻豆蜜桃av蜜臀av色欲av | 国产精品亚洲五月天高清 | 国产精品无码mv在线观看 | 性色av无码免费一区二区三区 | 乱码av麻豆丝袜熟女系列 | 亚洲阿v天堂在线 | 成人女人看片免费视频放人 | 人人妻人人澡人人爽人人精品 | 国语自产偷拍精品视频偷 | 欧洲精品码一区二区三区免费看 | 久久 国产 尿 小便 嘘嘘 | 国产9 9在线 | 中文 | 久久国语露脸国产精品电影 | 国产成人无码午夜视频在线观看 | 妺妺窝人体色www在线小说 | 亚洲精品国产a久久久久久 | 无码国产色欲xxxxx视频 | 日韩欧美群交p片內射中文 | 日本一区二区三区免费播放 | 最新国产麻豆aⅴ精品无码 | 免费看少妇作爱视频 | 亚洲精品国产精品乱码不卡 | 丰满诱人的人妻3 | 人妻体内射精一区二区三四 | 99麻豆久久久国产精品免费 | 丰满少妇熟乱xxxxx视频 | 中文无码精品a∨在线观看不卡 | 欧美亚洲国产一区二区三区 | 亚洲の无码国产の无码步美 | 天天躁日日躁狠狠躁免费麻豆 | 少妇厨房愉情理9仑片视频 | 国产精品va在线观看无码 | 成熟妇人a片免费看网站 | 99久久99久久免费精品蜜桃 | 成人亚洲精品久久久久 | 99国产欧美久久久精品 | 国产亚洲精品久久久久久大师 | 少妇邻居内射在线 | 亚洲一区二区三区在线观看网站 | 麻豆蜜桃av蜜臀av色欲av | 色欲人妻aaaaaaa无码 | 人人超人人超碰超国产 | 成人影院yy111111在线观看 | 国产办公室秘书无码精品99 | 亚洲精品午夜国产va久久成人 | 国产精品亚洲lv粉色 | 国产亚洲精品精品国产亚洲综合 | 精品日本一区二区三区在线观看 | 无码吃奶揉捏奶头高潮视频 | 欧美人与物videos另类 | 日韩精品一区二区av在线 | 亚洲人交乣女bbw | 亚洲欧美日韩成人高清在线一区 | 国产成人av免费观看 | 国内揄拍国内精品人妻 | 又湿又紧又大又爽a视频国产 | 在教室伦流澡到高潮hnp视频 | 日本一区二区三区免费高清 | 丝袜足控一区二区三区 | 无码精品人妻一区二区三区av | 国产又粗又硬又大爽黄老大爷视 | 大肉大捧一进一出好爽视频 | 中文字幕精品av一区二区五区 | 中文字幕人妻无码一夲道 | 国产人妻人伦精品1国产丝袜 | 少妇一晚三次一区二区三区 | 国产精品人人爽人人做我的可爱 | 免费无码肉片在线观看 | 内射白嫩少妇超碰 | 国产高清av在线播放 | 夜先锋av资源网站 | 亚洲毛片av日韩av无码 | 国产真实夫妇视频 | 99久久精品午夜一区二区 | 久久久久久久人妻无码中文字幕爆 | 无码人妻少妇伦在线电影 | 精品国精品国产自在久国产87 | 国产在热线精品视频 | 嫩b人妻精品一区二区三区 | 99re在线播放 | 成人av无码一区二区三区 | 在线视频网站www色 | 天堂久久天堂av色综合 | 无码人妻出轨黑人中文字幕 | 亚洲伊人久久精品影院 | 亚洲精品一区二区三区四区五区 | 亚洲日韩av一区二区三区四区 | 亚洲精品无码国产 | 性欧美大战久久久久久久 | 亚洲中文字幕乱码av波多ji | 国产精品二区一区二区aⅴ污介绍 | 天下第一社区视频www日本 | 亚洲中文无码av永久不收费 | 亚洲色欲色欲欲www在线 | 日韩人妻无码中文字幕视频 | 国产福利视频一区二区 | 99久久婷婷国产综合精品青草免费 | 国产无套粉嫩白浆在线 | 国产麻豆精品一区二区三区v视界 | 天天爽夜夜爽夜夜爽 | 亚洲综合在线一区二区三区 | av无码不卡在线观看免费 | 国产绳艺sm调教室论坛 | 秋霞成人午夜鲁丝一区二区三区 | 久久久久国色av免费观看性色 | 国内综合精品午夜久久资源 | 国产午夜无码视频在线观看 | 中文字幕乱妇无码av在线 | 1000部夫妻午夜免费 | 三上悠亚人妻中文字幕在线 | 2020久久超碰国产精品最新 | 色一情一乱一伦一视频免费看 | 国产精品国产三级国产专播 | 日韩视频 中文字幕 视频一区 | 久久精品人妻少妇一区二区三区 | 九九热爱视频精品 | 精品亚洲成av人在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 日韩精品一区二区av在线 | 狠狠色色综合网站 | 国产精品怡红院永久免费 | 久久午夜无码鲁丝片秋霞 | 男女下面进入的视频免费午夜 | av无码久久久久不卡免费网站 | 国产精品爱久久久久久久 | 午夜男女很黄的视频 | 好屌草这里只有精品 | 美女黄网站人色视频免费国产 | 亚洲国产日韩a在线播放 | 欧美国产日产一区二区 | 欧美一区二区三区视频在线观看 | 亚洲性无码av中文字幕 | 丝袜人妻一区二区三区 | 亚洲综合精品香蕉久久网 | 丝袜 中出 制服 人妻 美腿 | 国产亚av手机在线观看 | 一本久道久久综合狠狠爱 | 综合网日日天干夜夜久久 | 人人澡人人妻人人爽人人蜜桃 | 久久国产36精品色熟妇 | 日欧一片内射va在线影院 | 精品国产av色一区二区深夜久久 | 国产精品人人妻人人爽 | 亚洲の无码国产の无码步美 | а√资源新版在线天堂 | 日本精品人妻无码77777 天堂一区人妻无码 | 东京无码熟妇人妻av在线网址 | 狠狠cao日日穞夜夜穞av | 亚洲乱码中文字幕在线 | 无码纯肉视频在线观看 | 男女猛烈xx00免费视频试看 | 国产精品久久久久7777 | 天天摸天天碰天天添 | 精品国产乱码久久久久乱码 | 久久综合网欧美色妞网 | 日本大乳高潮视频在线观看 | 四十如虎的丰满熟妇啪啪 | 国产在线精品一区二区三区直播 | 高潮毛片无遮挡高清免费视频 | 小sao货水好多真紧h无码视频 | 中文字幕无码乱人伦 | 欧美日韩一区二区免费视频 | 亚洲精品综合五月久久小说 | 亚洲综合伊人久久大杳蕉 | 在线观看国产一区二区三区 | 久久国产精品偷任你爽任你 | 老熟女重囗味hdxx69 | 狂野欧美激情性xxxx | 无码午夜成人1000部免费视频 | 一本久久伊人热热精品中文字幕 | 纯爱无遮挡h肉动漫在线播放 | 亚洲另类伦春色综合小说 | av香港经典三级级 在线 | 国产精品理论片在线观看 | www国产亚洲精品久久久日本 | 性生交片免费无码看人 | 久久视频在线观看精品 | 欧美三级不卡在线观看 | 国产精品-区区久久久狼 | 一二三四社区在线中文视频 | 国产成人综合美国十次 | 亚洲成av人片在线观看无码不卡 | 亚洲精品中文字幕久久久久 | 领导边摸边吃奶边做爽在线观看 | 亚洲国产精品无码一区二区三区 | 中文字幕无线码免费人妻 | 国产精品办公室沙发 | 色情久久久av熟女人妻网站 | 中文字幕人妻无码一区二区三区 | 国产精华av午夜在线观看 | 一本久久a久久精品vr综合 | 日本肉体xxxx裸交 | 国产热a欧美热a在线视频 | 一区二区三区乱码在线 | 欧洲 | 欧美黑人性暴力猛交喷水 | 亚洲人成网站色7799 | 一本大道久久东京热无码av | 国产av无码专区亚洲a∨毛片 | 久久精品中文字幕一区 | 国产成人无码av在线影院 | 中文字幕人妻丝袜二区 | 亚洲国产精品无码一区二区三区 | 久久99热只有频精品8 | 色情久久久av熟女人妻网站 | 国产免费久久精品国产传媒 | 2020最新国产自产精品 | 扒开双腿吃奶呻吟做受视频 | 国产97人人超碰caoprom | 国产片av国语在线观看 | 亚洲码国产精品高潮在线 | 少妇性l交大片欧洲热妇乱xxx | 强伦人妻一区二区三区视频18 | 欧美日韩在线亚洲综合国产人 | 对白脏话肉麻粗话av | 国产在线精品一区二区高清不卡 | 亚洲s色大片在线观看 | 中文字幕无码免费久久9一区9 | 亚洲熟悉妇女xxx妇女av | 97夜夜澡人人爽人人喊中国片 | 国产精品久久久久久亚洲毛片 | 欧美肥老太牲交大战 | 国产高清av在线播放 | 无码国内精品人妻少妇 | 国产性生大片免费观看性 | 搡女人真爽免费视频大全 | 无码av免费一区二区三区试看 | 亚洲男女内射在线播放 | 人妻天天爽夜夜爽一区二区 | 人人妻人人澡人人爽精品欧美 | 国产精品18久久久久久麻辣 | 亚洲 另类 在线 欧美 制服 | 亚洲 激情 小说 另类 欧美 | 小泽玛莉亚一区二区视频在线 | 网友自拍区视频精品 | 亚洲熟妇色xxxxx亚洲 | 亚洲综合在线一区二区三区 | 蜜臀av在线播放 久久综合激激的五月天 | 99久久精品午夜一区二区 | 内射白嫩少妇超碰 | www国产精品内射老师 | 精品一二三区久久aaa片 | 国产成人无码午夜视频在线观看 | ass日本丰满熟妇pics | 免费无码的av片在线观看 | 麻豆国产人妻欲求不满 | 人妻少妇精品久久 | 成人性做爰aaa片免费看 | 国产熟女一区二区三区四区五区 | 国产av人人夜夜澡人人爽麻豆 | 色窝窝无码一区二区三区色欲 | 亚洲国产av美女网站 | 97夜夜澡人人爽人人喊中国片 | 兔费看少妇性l交大片免费 | 欧美喷潮久久久xxxxx | 18禁黄网站男男禁片免费观看 | 一本加勒比波多野结衣 | 天天摸天天透天天添 | 色婷婷综合中文久久一本 | 日韩av无码中文无码电影 | 女人被爽到呻吟gif动态图视看 | 在线精品亚洲一区二区 | 亚洲精品综合一区二区三区在线 | 国产熟妇高潮叫床视频播放 | 日日天日日夜日日摸 | 亚洲熟妇色xxxxx欧美老妇 | 无码成人精品区在线观看 | 国产精品久久国产三级国 | 国产偷抇久久精品a片69 | 欧美亚洲日韩国产人成在线播放 | 久久亚洲精品成人无码 | 国产艳妇av在线观看果冻传媒 | 国语自产偷拍精品视频偷 | 久久国内精品自在自线 | 奇米影视7777久久精品人人爽 | 亚洲综合在线一区二区三区 | 亚洲国产一区二区三区在线观看 | 亚洲国产精华液网站w | 国产精品人妻一区二区三区四 | 国产av人人夜夜澡人人爽麻豆 | 国产高清av在线播放 | 国产精品爱久久久久久久 | 98国产精品综合一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 国产精品无码mv在线观看 | 日本又色又爽又黄的a片18禁 | 欧美成人免费全部网站 | 国产亚洲精品久久久久久国模美 | 无码中文字幕色专区 | 亚洲国产精华液网站w | 欧美丰满老熟妇xxxxx性 | 亚洲综合精品香蕉久久网 | 伊在人天堂亚洲香蕉精品区 | 色窝窝无码一区二区三区色欲 | 婷婷丁香六月激情综合啪 | 亚洲区小说区激情区图片区 | 国产午夜精品一区二区三区嫩草 | 精品国产国产综合精品 | 麻豆成人精品国产免费 | 牲交欧美兽交欧美 | 国产极品视觉盛宴 | 中文字幕+乱码+中文字幕一区 | 亚洲区小说区激情区图片区 | 国产一精品一av一免费 | 高中生自慰www网站 | 中文字幕色婷婷在线视频 | 国产国语老龄妇女a片 | 久久亚洲精品中文字幕无男同 | 欧美日韩一区二区免费视频 | 97久久精品无码一区二区 | 欧美一区二区三区视频在线观看 | 亚洲小说图区综合在线 | 亚洲综合无码一区二区三区 | 欧美丰满老熟妇xxxxx性 | 蜜桃臀无码内射一区二区三区 | 四虎国产精品免费久久 | 国产乱人偷精品人妻a片 | 扒开双腿疯狂进出爽爽爽视频 | 国产精品美女久久久网av | 蜜桃臀无码内射一区二区三区 | 一本久道高清无码视频 | 国产亚洲人成在线播放 | 精品人人妻人人澡人人爽人人 | 国产 精品 自在自线 | 色综合久久久久综合一本到桃花网 | 日韩欧美中文字幕公布 | 精品一区二区三区无码免费视频 | 亚洲精品中文字幕久久久久 | 2020最新国产自产精品 | 亚洲の无码国产の无码步美 | 高清不卡一区二区三区 | 日本精品久久久久中文字幕 | 国产精品人人妻人人爽 | 亚洲区小说区激情区图片区 | 亚洲无人区一区二区三区 | 国产人妻大战黑人第1集 | 亚洲一区二区三区国产精华液 | 日本一区二区三区免费高清 | 九九综合va免费看 | 99久久久国产精品无码免费 | 四十如虎的丰满熟妇啪啪 | 强开小婷嫩苞又嫩又紧视频 | 亚洲精品无码人妻无码 | 国产人成高清在线视频99最全资源 | 精品aⅴ一区二区三区 | 四虎永久在线精品免费网址 | 久久亚洲日韩精品一区二区三区 | 装睡被陌生人摸出水好爽 | a在线亚洲男人的天堂 | 午夜精品久久久内射近拍高清 | 国产午夜精品一区二区三区嫩草 | 久久精品人人做人人综合 | 少妇的肉体aa片免费 | 欧洲美熟女乱又伦 | a在线观看免费网站大全 | 国产午夜亚洲精品不卡 | 天堂а√在线中文在线 | 亚洲啪av永久无码精品放毛片 | 国产精品igao视频网 | 无码国产激情在线观看 | 精品国产一区二区三区四区在线看 | 大胆欧美熟妇xx | 激情亚洲一区国产精品 | 捆绑白丝粉色jk震动捧喷白浆 | 国产一区二区三区影院 | 高清无码午夜福利视频 | 国产在线一区二区三区四区五区 | 伊人久久大香线焦av综合影院 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产精品怡红院永久免费 | 欧洲美熟女乱又伦 | 嫩b人妻精品一区二区三区 | 精品国产福利一区二区 | 一本久道久久综合婷婷五月 | 久久久久久久女国产乱让韩 | 永久免费观看国产裸体美女 | 桃花色综合影院 | 一本加勒比波多野结衣 | 欧美激情一区二区三区成人 | 亚洲一区二区三区国产精华液 | 人妻无码αv中文字幕久久琪琪布 | 亚洲国产成人av在线观看 | 人人妻人人澡人人爽欧美一区 | 男人和女人高潮免费网站 | 国产高潮视频在线观看 | 人人妻人人藻人人爽欧美一区 | 国产99久久精品一区二区 | 欧美性猛交内射兽交老熟妇 | 亚洲精品欧美二区三区中文字幕 | 国产一区二区三区四区五区加勒比 | 亚洲精品美女久久久久久久 | 国产免费无码一区二区视频 | 日韩精品无码一本二本三本色 | aa片在线观看视频在线播放 | 久久97精品久久久久久久不卡 | 综合人妻久久一区二区精品 | 人人妻人人澡人人爽人人精品浪潮 | 欧美三级不卡在线观看 |