void PlanarYCbCrImageD3D10::AllocateTextures() { D3D10_SUBRESOURCE_DATA dataY; D3D10_SUBRESOURCE_DATA dataCb; D3D10_SUBRESOURCE_DATA dataCr; CD3D10_TEXTURE2D_DESC descY(DXGI_FORMAT_R8_UNORM, mData.mYSize.width, mData.mYSize.height, 1, 1); CD3D10_TEXTURE2D_DESC descCbCr(DXGI_FORMAT_R8_UNORM, mData.mCbCrSize.width, mData.mCbCrSize.height, 1, 1); descY.Usage = descCbCr.Usage = D3D10_USAGE_IMMUTABLE; dataY.pSysMem = mData.mYChannel; dataY.SysMemPitch = mData.mYStride; dataCb.pSysMem = mData.mCbChannel; dataCb.SysMemPitch = mData.mCbCrStride; dataCr.pSysMem = mData.mCrChannel; dataCr.SysMemPitch = mData.mCbCrStride; mDevice->CreateTexture2D(&descY, &dataY, getter_AddRefs(mYTexture)); mDevice->CreateTexture2D(&descCbCr, &dataCb, getter_AddRefs(mCbTexture)); mDevice->CreateTexture2D(&descCbCr, &dataCr, getter_AddRefs(mCrTexture)); mDevice->CreateShaderResourceView(mYTexture, NULL, getter_AddRefs(mYView)); mDevice->CreateShaderResourceView(mCbTexture, NULL, getter_AddRefs(mCbView)); mDevice->CreateShaderResourceView(mCrTexture, NULL, getter_AddRefs(mCrView)); }
void ImageLayerD3D10::AllocateTexturesYCbCr(PlanarYCbCrImage *aImage) { nsAutoPtr<PlanarYCbCrD3D10BackendData> backendData( new PlanarYCbCrD3D10BackendData); const PlanarYCbCrImage::Data *data = aImage->GetData(); D3D10_SUBRESOURCE_DATA dataY; D3D10_SUBRESOURCE_DATA dataCb; D3D10_SUBRESOURCE_DATA dataCr; CD3D10_TEXTURE2D_DESC descY(DXGI_FORMAT_R8_UNORM, data->mYSize.width, data->mYSize.height, 1, 1); CD3D10_TEXTURE2D_DESC descCbCr(DXGI_FORMAT_R8_UNORM, data->mCbCrSize.width, data->mCbCrSize.height, 1, 1); descY.Usage = descCbCr.Usage = D3D10_USAGE_IMMUTABLE; dataY.pSysMem = data->mYChannel; dataY.SysMemPitch = data->mYStride; dataCb.pSysMem = data->mCbChannel; dataCb.SysMemPitch = data->mCbCrStride; dataCr.pSysMem = data->mCrChannel; dataCr.SysMemPitch = data->mCbCrStride; HRESULT hr = device()->CreateTexture2D(&descY, &dataY, getter_AddRefs(backendData->mYTexture)); if (!FAILED(hr)) { hr = device()->CreateTexture2D(&descCbCr, &dataCb, getter_AddRefs(backendData->mCbTexture)); } if (!FAILED(hr)) { hr = device()->CreateTexture2D(&descCbCr, &dataCr, getter_AddRefs(backendData->mCrTexture)); } if (FAILED(hr)) { LayerManagerD3D10::ReportFailure(NS_LITERAL_CSTRING("PlanarYCbCrImageD3D10::AllocateTextures(): Failed to create texture"), hr); return; } device()->CreateShaderResourceView(backendData->mYTexture, NULL, getter_AddRefs(backendData->mYView)); device()->CreateShaderResourceView(backendData->mCbTexture, NULL, getter_AddRefs(backendData->mCbView)); device()->CreateShaderResourceView(backendData->mCrTexture, NULL, getter_AddRefs(backendData->mCrView)); aImage->SetBackendData(mozilla::layers::LAYERS_D3D10, backendData.forget()); }