blob: 2960a6ba10b47463754d811a7935f0e0c7fef599 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/gl/gl_image_dxgi.h"
#include "third_party/khronos/EGL/egl.h"
#include "third_party/khronos/EGL/eglext.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_image.h"
#include "ui/gl/gl_surface_egl.h"
namespace gl {
GLImageDXGI::GLImageDXGI(const gfx::Size& size, EGLStreamKHR stream)
: size_(size), stream_(stream) {}
// static
GLImageDXGI* GLImageDXGI::FromGLImage(GLImage* image) {
if (!image || image->GetType() != Type::DXGI_IMAGE)
return nullptr;
return static_cast<GLImageDXGI*>(image);
}
gfx::Size GLImageDXGI::GetSize() {
return size_;
}
unsigned GLImageDXGI::GetInternalFormat() {
return GL_BGRA_EXT;
}
bool GLImageDXGI::BindTexImage(unsigned target) {
return false;
}
void GLImageDXGI::ReleaseTexImage(unsigned target) {}
bool GLImageDXGI::CopyTexImage(unsigned target) {
return false;
}
bool GLImageDXGI::CopyTexSubImage(unsigned target,
const gfx::Point& offset,
const gfx::Rect& rect) {
return false;
}
bool GLImageDXGI::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
int z_order,
gfx::OverlayTransform transform,
const gfx::Rect& bounds_rect,
const gfx::RectF& crop_rect) {
return false;
}
void GLImageDXGI::Flush() {}
void GLImageDXGI::OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
uint64_t process_tracing_id,
const std::string& dump_name) {}
GLImage::Type GLImageDXGI::GetType() const {
return Type::DXGI_IMAGE;
}
void GLImageDXGI::SetTexture(
const base::win::ScopedComPtr<ID3D11Texture2D>& texture,
size_t level) {
texture_ = texture;
level_ = level;
}
GLImageDXGI::~GLImageDXGI() {
EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay();
eglDestroyStreamKHR(egl_display, stream_);
}
} // namespace gl