Commit c7b82973 authored by Jonathan Backer's avatar Jonathan Backer Committed by Commit Bot

Delete dead code from RasterInterface

With the transition to SharedImage, many of the RasterInterface
methods are not longer used. This will make it easier to support
RasterDecoder with passthrough textures.

Change-Id: Ie62c4ecfa978a85a6f74a996c0e75ce9dcc38315
Reviewed-on: https://chromium-review.googlesource.com/c/1327607
Commit-Queue: Jonathan Backer <backer@chromium.org>
Reviewed-by: default avatarAntoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#610116}
parent 8d3fdfc6
...@@ -87,24 +87,6 @@ void TextureAllocation::AllocateStorage(gpu::gles2::GLES2Interface* gl, ...@@ -87,24 +87,6 @@ void TextureAllocation::AllocateStorage(gpu::gles2::GLES2Interface* gl,
} }
} }
// static
void TextureAllocation::AllocateStorage(gpu::raster::RasterInterface* ri,
const gpu::Capabilities& caps,
ResourceFormat format,
const gfx::Size& size,
const TextureAllocation& alloc,
const gfx::ColorSpace& color_space) {
// ETC1 resources cannot be preallocated.
if (format == ETC1)
return;
ri->TexStorage2D(alloc.texture_id, size.width(), size.height());
if (alloc.overlay_candidate && color_space.IsValid()) {
ri->SetColorSpaceMetadata(alloc.texture_id,
reinterpret_cast<GLColorSpace>(
const_cast<gfx::ColorSpace*>(&color_space)));
}
}
void TextureAllocation::UploadStorage(gpu::gles2::GLES2Interface* gl, void TextureAllocation::UploadStorage(gpu::gles2::GLES2Interface* gl,
const gpu::Capabilities& caps, const gpu::Capabilities& caps,
ResourceFormat format, ResourceFormat format,
......
...@@ -21,9 +21,6 @@ struct Capabilities; ...@@ -21,9 +21,6 @@ struct Capabilities;
namespace gles2 { namespace gles2 {
class GLES2Interface; class GLES2Interface;
} }
namespace raster {
class RasterInterface;
}
} // namespace gpu } // namespace gpu
namespace viz { namespace viz {
...@@ -52,12 +49,6 @@ class VIZ_COMMON_EXPORT TextureAllocation { ...@@ -52,12 +49,6 @@ class VIZ_COMMON_EXPORT TextureAllocation {
const gfx::Size& size, const gfx::Size& size,
const TextureAllocation& alloc, const TextureAllocation& alloc,
const gfx::ColorSpace& color_space); const gfx::ColorSpace& color_space);
static void AllocateStorage(gpu::raster::RasterInterface* ri,
const gpu::Capabilities& caps,
ResourceFormat format,
const gfx::Size& size,
const TextureAllocation& alloc,
const gfx::ColorSpace& color_space);
// Allocates storage for a texture id previously generated by MakeTextureId(), // Allocates storage for a texture id previously generated by MakeTextureId(),
// and uploads the contents of |pixels| to it. |pixels| should point to a // and uploads the contents of |pixels| to it. |pixels| should point to a
......
...@@ -42,15 +42,6 @@ void GetError(uint32_t result_shm_id, uint32_t result_shm_offset) { ...@@ -42,15 +42,6 @@ void GetError(uint32_t result_shm_id, uint32_t result_shm_offset) {
} }
} }
void GetIntegerv(GLenum pname,
uint32_t params_shm_id,
uint32_t params_shm_offset) {
raster::cmds::GetIntegerv* c = GetCmdSpace<raster::cmds::GetIntegerv>();
if (c) {
c->Init(pname, params_shm_id, params_shm_offset);
}
}
void GenQueriesEXTImmediate(GLsizei n, GLuint* queries) { void GenQueriesEXTImmediate(GLsizei n, GLuint* queries) {
const uint32_t size = raster::cmds::GenQueriesEXTImmediate::ComputeSize(n); const uint32_t size = raster::cmds::GenQueriesEXTImmediate::ComputeSize(n);
raster::cmds::GenQueriesEXTImmediate* c = raster::cmds::GenQueriesEXTImmediate* c =
...@@ -113,19 +104,6 @@ void WaitSyncTokenCHROMIUM(GLint namespace_id, ...@@ -113,19 +104,6 @@ void WaitSyncTokenCHROMIUM(GLint namespace_id,
} }
} }
void UnpremultiplyAndDitherCopyCHROMIUM(GLuint source_id,
GLuint dest_id,
GLint x,
GLint y,
GLsizei width,
GLsizei height) {
raster::cmds::UnpremultiplyAndDitherCopyCHROMIUM* c =
GetCmdSpace<raster::cmds::UnpremultiplyAndDitherCopyCHROMIUM>();
if (c) {
c->Init(source_id, dest_id, x, y, width, height);
}
}
void BeginRasterCHROMIUMImmediate(GLuint sk_color, void BeginRasterCHROMIUMImmediate(GLuint sk_color,
GLuint msaa_sample_count, GLuint msaa_sample_count,
GLboolean can_use_lcd_text, GLboolean can_use_lcd_text,
...@@ -225,38 +203,6 @@ void ClearPaintCacheINTERNAL() { ...@@ -225,38 +203,6 @@ void ClearPaintCacheINTERNAL() {
} }
} }
void CreateTexture(bool use_buffer,
gfx::BufferUsage buffer_usage,
viz::ResourceFormat format,
uint32_t client_id) {
raster::cmds::CreateTexture* c = GetCmdSpace<raster::cmds::CreateTexture>();
if (c) {
c->Init(use_buffer, buffer_usage, format, client_id);
}
}
void SetColorSpaceMetadata(GLuint texture_id,
GLuint shm_id,
GLuint shm_offset,
GLsizei color_space_size) {
raster::cmds::SetColorSpaceMetadata* c =
GetCmdSpace<raster::cmds::SetColorSpaceMetadata>();
if (c) {
c->Init(texture_id, shm_id, shm_offset, color_space_size);
}
}
void ProduceTextureDirectImmediate(GLuint texture, GLbyte* mailbox) {
const uint32_t size =
raster::cmds::ProduceTextureDirectImmediate::ComputeSize();
raster::cmds::ProduceTextureDirectImmediate* c =
GetImmediateCmdSpaceTotalSize<
raster::cmds::ProduceTextureDirectImmediate>(size);
if (c) {
c->Init(texture, mailbox);
}
}
void CreateAndConsumeTextureINTERNALImmediate(GLuint texture_id, void CreateAndConsumeTextureINTERNALImmediate(GLuint texture_id,
bool use_buffer, bool use_buffer,
gfx::BufferUsage buffer_usage, gfx::BufferUsage buffer_usage,
...@@ -272,36 +218,6 @@ void CreateAndConsumeTextureINTERNALImmediate(GLuint texture_id, ...@@ -272,36 +218,6 @@ void CreateAndConsumeTextureINTERNALImmediate(GLuint texture_id,
} }
} }
void TexParameteri(GLuint texture_id, GLenum pname, GLint param) {
raster::cmds::TexParameteri* c = GetCmdSpace<raster::cmds::TexParameteri>();
if (c) {
c->Init(texture_id, pname, param);
}
}
void BindTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) {
raster::cmds::BindTexImage2DCHROMIUM* c =
GetCmdSpace<raster::cmds::BindTexImage2DCHROMIUM>();
if (c) {
c->Init(texture_id, image_id);
}
}
void ReleaseTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) {
raster::cmds::ReleaseTexImage2DCHROMIUM* c =
GetCmdSpace<raster::cmds::ReleaseTexImage2DCHROMIUM>();
if (c) {
c->Init(texture_id, image_id);
}
}
void TexStorage2D(GLuint texture_id, GLsizei width, GLsizei height) {
raster::cmds::TexStorage2D* c = GetCmdSpace<raster::cmds::TexStorage2D>();
if (c) {
c->Init(texture_id, width, height);
}
}
void CopySubTexture(GLuint source_id, void CopySubTexture(GLuint source_id,
GLuint dest_id, GLuint dest_id,
GLint xoffset, GLint xoffset,
......
...@@ -658,22 +658,6 @@ void RasterImplementation::SetGLErrorInvalidEnum(const char* function_name, ...@@ -658,22 +658,6 @@ void RasterImplementation::SetGLErrorInvalidEnum(const char* function_name,
(std::string(label) + " was " + GLES2Util::GetStringEnum(value)).c_str()); (std::string(label) + " was " + GLES2Util::GetStringEnum(value)).c_str());
} }
bool RasterImplementation::GetIntegervHelper(GLenum pname, GLint* params) {
switch (pname) {
case GL_ACTIVE_TEXTURE:
*params = active_texture_unit_ + GL_TEXTURE0;
return true;
case GL_MAX_TEXTURE_SIZE:
*params = capabilities_.max_texture_size;
return true;
case GL_TEXTURE_BINDING_2D:
*params = texture_units_[active_texture_unit_].bound_texture_2d;
return true;
default:
return false;
}
}
bool RasterImplementation::GetQueryObjectValueHelper(const char* function_name, bool RasterImplementation::GetQueryObjectValueHelper(const char* function_name,
GLuint id, GLuint id,
GLenum pname, GLenum pname,
...@@ -980,92 +964,6 @@ void RasterImplementation::WaitSyncTokenCHROMIUM( ...@@ -980,92 +964,6 @@ void RasterImplementation::WaitSyncTokenCHROMIUM(
gpu_control_->WaitSyncTokenHint(verified_sync_token); gpu_control_->WaitSyncTokenHint(verified_sync_token);
} }
namespace {
bool CreateImageValidInternalFormat(GLenum internalformat,
const Capabilities& capabilities) {
switch (internalformat) {
case GL_R16_EXT:
return capabilities.texture_norm16;
case GL_RGB10_A2_EXT:
return capabilities.image_xr30;
case GL_RED:
case GL_RG_EXT:
case GL_RGB:
case GL_RGBA:
case GL_RGB_YCBCR_422_CHROMIUM:
case GL_RGB_YCBCR_420V_CHROMIUM:
case GL_RGB_YCRCB_420_CHROMIUM:
case GL_BGRA_EXT:
return true;
default:
return false;
}
}
} // namespace
GLuint RasterImplementation::CreateImageCHROMIUMHelper(ClientBuffer buffer,
GLsizei width,
GLsizei height,
GLenum internalformat) {
if (width <= 0) {
SetGLError(GL_INVALID_VALUE, "glCreateImageCHROMIUM", "width <= 0");
return 0;
}
if (height <= 0) {
SetGLError(GL_INVALID_VALUE, "glCreateImageCHROMIUM", "height <= 0");
return 0;
}
if (!CreateImageValidInternalFormat(internalformat, capabilities_)) {
SetGLError(GL_INVALID_VALUE, "glCreateImageCHROMIUM", "invalid format");
return 0;
}
// CreateImage creates a fence sync so we must flush first to ensure all
// previously created fence syncs are flushed first.
FlushHelper();
int32_t image_id = gpu_control_->CreateImage(buffer, width, height);
if (image_id < 0) {
SetGLError(GL_OUT_OF_MEMORY, "glCreateImageCHROMIUM", "image_id < 0");
return 0;
}
return image_id;
}
GLuint RasterImplementation::CreateImageCHROMIUM(ClientBuffer buffer,
GLsizei width,
GLsizei height,
GLenum internalformat) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateImageCHROMIUM(" << width
<< ", " << height << ", "
<< GLES2Util::GetStringImageInternalFormat(internalformat)
<< ")");
GLuint image_id =
CreateImageCHROMIUMHelper(buffer, width, height, internalformat);
CheckGLError();
return image_id;
}
void RasterImplementation::DestroyImageCHROMIUMHelper(GLuint image_id) {
// Flush the command stream to make sure all pending commands
// that may refer to the image_id are executed on the service side.
helper_->CommandBufferHelper::Flush();
gpu_control_->DestroyImage(image_id);
}
void RasterImplementation::DestroyImageCHROMIUM(GLuint image_id) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDestroyImageCHROMIUM("
<< image_id << ")");
DestroyImageCHROMIUMHelper(image_id);
CheckGLError();
}
void* RasterImplementation::MapRasterCHROMIUM(GLsizeiptr size) { void* RasterImplementation::MapRasterCHROMIUM(GLsizeiptr size) {
if (size < 0) { if (size < 0) {
SetGLError(GL_INVALID_VALUE, "glMapRasterCHROMIUM", "negative size"); SetGLError(GL_INVALID_VALUE, "glMapRasterCHROMIUM", "negative size");
...@@ -1159,44 +1057,6 @@ void RasterImplementation::UnmapRasterCHROMIUM(GLsizeiptr raster_written_size, ...@@ -1159,44 +1057,6 @@ void RasterImplementation::UnmapRasterCHROMIUM(GLsizeiptr raster_written_size,
// instead of having to edit some template or the code generator. // instead of having to edit some template or the code generator.
#include "gpu/command_buffer/client/raster_implementation_impl_autogen.h" #include "gpu/command_buffer/client/raster_implementation_impl_autogen.h"
void RasterImplementation::SetColorSpaceMetadata(GLuint texture_id,
GLColorSpace color_space) {
#if defined(__native_client__)
// Including gfx::ColorSpace would bring Skia and a lot of other code into
// NaCl's IRT.
SetGLError(GL_INVALID_VALUE, "RasterImplementation::SetColorSpaceMetadata",
"not supported");
#else
gfx::ColorSpace* gfx_color_space =
reinterpret_cast<gfx::ColorSpace*>(color_space);
base::Pickle color_space_data;
IPC::ParamTraits<gfx::ColorSpace>::Write(&color_space_data, *gfx_color_space);
ScopedTransferBufferPtr buffer(color_space_data.size(), helper_,
transfer_buffer_);
if (!buffer.valid() || buffer.size() < color_space_data.size()) {
SetGLError(GL_OUT_OF_MEMORY, "RasterImplementation::SetColorSpaceMetadata",
"out of memory");
return;
}
memcpy(buffer.address(), color_space_data.data(), color_space_data.size());
helper_->SetColorSpaceMetadata(texture_id, buffer.shm_id(), buffer.offset(),
color_space_data.size());
#endif
}
void RasterImplementation::ProduceTextureDirect(GLuint texture, GLbyte* data) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glProduceTextureDirectCHROMIUM("
<< static_cast<const void*>(data) << ")");
static_assert(std::is_trivially_copyable<Mailbox>::value,
"gpu::Mailbox is not trivially copyable");
Mailbox result = Mailbox::Generate();
memcpy(data, result.name, sizeof(result.name));
helper_->ProduceTextureDirectImmediate(texture, data);
CheckGLError();
}
GLuint RasterImplementation::CreateAndConsumeTexture( GLuint RasterImplementation::CreateAndConsumeTexture(
bool use_buffer, bool use_buffer,
gfx::BufferUsage buffer_usage, gfx::BufferUsage buffer_usage,
......
...@@ -239,16 +239,6 @@ class RASTER_EXPORT RasterImplementation : public RasterInterface, ...@@ -239,16 +239,6 @@ class RASTER_EXPORT RasterImplementation : public RasterInterface,
void UnbindTexturesHelper(GLsizei n, const GLuint* textures); void UnbindTexturesHelper(GLsizei n, const GLuint* textures);
void DeleteQueriesEXTHelper(GLsizei n, const GLuint* queries); void DeleteQueriesEXTHelper(GLsizei n, const GLuint* queries);
GLuint CreateImageCHROMIUMHelper(ClientBuffer buffer,
GLsizei width,
GLsizei height,
GLenum internalformat);
void DestroyImageCHROMIUMHelper(GLuint image_id);
// Helpers for query functions.
bool GetIntegervHelper(GLenum pname, GLint* params);
bool GetTexParameterivHelper(GLenum target, GLenum pname, GLint* params);
// IdAllocators for objects that can't be shared among contexts. // IdAllocators for objects that can't be shared among contexts.
IdAllocator* GetIdAllocator(IdNamespaces id_namespace); IdAllocator* GetIdAllocator(IdNamespaces id_namespace);
......
...@@ -21,8 +21,6 @@ void Flush() override; ...@@ -21,8 +21,6 @@ void Flush() override;
GLenum GetError() override; GLenum GetError() override;
void GetIntegerv(GLenum pname, GLint* params) override;
void ShallowFlushCHROMIUM() override; void ShallowFlushCHROMIUM() override;
void OrderingBarrierCHROMIUM() override; void OrderingBarrierCHROMIUM() override;
...@@ -37,13 +35,6 @@ void EndQueryEXT(GLenum target) override; ...@@ -37,13 +35,6 @@ void EndQueryEXT(GLenum target) override;
void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) override; void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) override;
GLuint CreateImageCHROMIUM(ClientBuffer buffer,
GLsizei width,
GLsizei height,
GLenum internalformat) override;
void DestroyImageCHROMIUM(GLuint image_id) override;
void LoseContextCHROMIUM(GLenum current, GLenum other) override; void LoseContextCHROMIUM(GLenum current, GLenum other) override;
void GenSyncTokenCHROMIUM(GLbyte* sync_token) override; void GenSyncTokenCHROMIUM(GLbyte* sync_token) override;
...@@ -54,39 +45,15 @@ void VerifySyncTokensCHROMIUM(GLbyte** sync_tokens, GLsizei count) override; ...@@ -54,39 +45,15 @@ void VerifySyncTokensCHROMIUM(GLbyte** sync_tokens, GLsizei count) override;
void WaitSyncTokenCHROMIUM(const GLbyte* sync_token) override; void WaitSyncTokenCHROMIUM(const GLbyte* sync_token) override;
void UnpremultiplyAndDitherCopyCHROMIUM(GLuint source_id,
GLuint dest_id,
GLint x,
GLint y,
GLsizei width,
GLsizei height) override;
GLenum GetGraphicsResetStatusKHR() override; GLenum GetGraphicsResetStatusKHR() override;
void EndRasterCHROMIUM() override; void EndRasterCHROMIUM() override;
GLuint CreateTexture(bool use_buffer,
gfx::BufferUsage buffer_usage,
viz::ResourceFormat format) override;
void SetColorSpaceMetadata(GLuint texture_id,
GLColorSpace color_space) override;
void ProduceTextureDirect(GLuint texture, GLbyte* mailbox) override;
GLuint CreateAndConsumeTexture(bool use_buffer, GLuint CreateAndConsumeTexture(bool use_buffer,
gfx::BufferUsage buffer_usage, gfx::BufferUsage buffer_usage,
viz::ResourceFormat format, viz::ResourceFormat format,
const GLbyte* mailbox) override; const GLbyte* mailbox) override;
void TexParameteri(GLuint texture_id, GLenum pname, GLint param) override;
void BindTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) override;
void ReleaseTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) override;
void TexStorage2D(GLuint texture_id, GLsizei width, GLsizei height) override;
void CopySubTexture(GLuint source_id, void CopySubTexture(GLuint source_id,
GLuint dest_id, GLuint dest_id,
GLint xoffset, GLint xoffset,
......
...@@ -54,40 +54,10 @@ RasterImplementationGLES::Texture* RasterImplementationGLES::GetTexture( ...@@ -54,40 +54,10 @@ RasterImplementationGLES::Texture* RasterImplementationGLES::GetTexture(
return &it->second; return &it->second;
} }
RasterImplementationGLES::Texture* RasterImplementationGLES::EnsureTextureBound(
RasterImplementationGLES::Texture* texture) {
DCHECK(texture);
// Reads client side cache of bindings in GLES2Implementation.
GLint bound_texture = 0;
GLenum pname = 0;
switch (texture->target) {
case GL_TEXTURE_2D:
pname = GL_TEXTURE_BINDING_2D;
break;
case GL_TEXTURE_RECTANGLE_ARB:
pname = GL_TEXTURE_BINDING_RECTANGLE_ARB;
break;
case GL_TEXTURE_EXTERNAL_OES:
pname = GL_TEXTURE_BINDING_EXTERNAL_OES;
break;
default:
NOTREACHED();
}
if (pname != 0)
gl_->GetIntegerv(pname, &bound_texture);
if (bound_texture != static_cast<GLint>(texture->id))
gl_->BindTexture(texture->target, texture->id);
return texture;
}
RasterImplementationGLES::RasterImplementationGLES( RasterImplementationGLES::RasterImplementationGLES(
gles2::GLES2Interface* gl, gles2::GLES2Interface* gl,
const gpu::Capabilities& caps) const gpu::Capabilities& caps)
: gl_(gl), : gl_(gl), caps_(caps) {}
caps_(caps),
use_texture_storage_(caps.texture_storage),
use_texture_storage_image_(caps.texture_storage_image) {}
RasterImplementationGLES::~RasterImplementationGLES() {} RasterImplementationGLES::~RasterImplementationGLES() {}
...@@ -133,10 +103,6 @@ GLenum RasterImplementationGLES::GetGraphicsResetStatusKHR() { ...@@ -133,10 +103,6 @@ GLenum RasterImplementationGLES::GetGraphicsResetStatusKHR() {
return gl_->GetGraphicsResetStatusKHR(); return gl_->GetGraphicsResetStatusKHR();
} }
void RasterImplementationGLES::GetIntegerv(GLenum pname, GLint* params) {
gl_->GetIntegerv(pname, params);
}
void RasterImplementationGLES::LoseContextCHROMIUM(GLenum current, void RasterImplementationGLES::LoseContextCHROMIUM(GLenum current,
GLenum other) { GLenum other) {
gl_->LoseContextCHROMIUM(current, other); gl_->LoseContextCHROMIUM(current, other);
...@@ -165,22 +131,6 @@ void RasterImplementationGLES::GetQueryObjectuivEXT(GLuint id, ...@@ -165,22 +131,6 @@ void RasterImplementationGLES::GetQueryObjectuivEXT(GLuint id,
gl_->GetQueryObjectuivEXT(id, pname, params); gl_->GetQueryObjectuivEXT(id, pname, params);
} }
GLuint RasterImplementationGLES::CreateTexture(bool use_buffer,
gfx::BufferUsage buffer_usage,
viz::ResourceFormat format) {
GLuint texture_id = 0;
gl_->GenTextures(1, &texture_id);
DCHECK(texture_id);
DCHECK(!viz::IsResourceFormatCompressed(format));
GLenum target = use_buffer
? GetImageTextureTarget(caps_, buffer_usage, format)
: GL_TEXTURE_2D;
texture_info_.emplace(std::make_pair(
texture_id,
Texture(texture_id, target, use_buffer, buffer_usage, format)));
return texture_id;
}
void RasterImplementationGLES::DeleteTextures(GLsizei n, void RasterImplementationGLES::DeleteTextures(GLsizei n,
const GLuint* textures) { const GLuint* textures) {
DCHECK_GT(n, 0); DCHECK_GT(n, 0);
...@@ -194,25 +144,6 @@ void RasterImplementationGLES::DeleteTextures(GLsizei n, ...@@ -194,25 +144,6 @@ void RasterImplementationGLES::DeleteTextures(GLsizei n,
gl_->DeleteTextures(n, textures); gl_->DeleteTextures(n, textures);
} }
void RasterImplementationGLES::SetColorSpaceMetadata(GLuint texture_id,
GLColorSpace color_space) {
Texture* texture = GetTexture(texture_id);
gl_->SetColorSpaceMetadataCHROMIUM(texture->id, color_space);
}
void RasterImplementationGLES::TexParameteri(GLuint texture_id,
GLenum pname,
GLint param) {
Texture* texture = EnsureTextureBound(GetTexture(texture_id));
gl_->TexParameteri(texture->target, pname, param);
}
void RasterImplementationGLES::ProduceTextureDirect(GLuint texture_id,
GLbyte* mailbox) {
Texture* texture = GetTexture(texture_id);
gl_->ProduceTextureDirectCHROMIUM(texture->id, mailbox);
}
GLuint RasterImplementationGLES::CreateAndConsumeTexture( GLuint RasterImplementationGLES::CreateAndConsumeTexture(
bool use_buffer, bool use_buffer,
gfx::BufferUsage buffer_usage, gfx::BufferUsage buffer_usage,
...@@ -232,51 +163,6 @@ GLuint RasterImplementationGLES::CreateAndConsumeTexture( ...@@ -232,51 +163,6 @@ GLuint RasterImplementationGLES::CreateAndConsumeTexture(
return texture_id; return texture_id;
} }
GLuint RasterImplementationGLES::CreateImageCHROMIUM(ClientBuffer buffer,
GLsizei width,
GLsizei height,
GLenum internalformat) {
return gl_->CreateImageCHROMIUM(buffer, width, height, internalformat);
}
void RasterImplementationGLES::BindTexImage2DCHROMIUM(GLuint texture_id,
GLint image_id) {
Texture* texture = EnsureTextureBound(GetTexture(texture_id));
gl_->BindTexImage2DCHROMIUM(texture->target, image_id);
}
void RasterImplementationGLES::ReleaseTexImage2DCHROMIUM(GLuint texture_id,
GLint image_id) {
Texture* texture = EnsureTextureBound(GetTexture(texture_id));
gl_->ReleaseTexImage2DCHROMIUM(texture->target, image_id);
}
void RasterImplementationGLES::DestroyImageCHROMIUM(GLuint image_id) {
gl_->DestroyImageCHROMIUM(image_id);
}
void RasterImplementationGLES::TexStorage2D(GLuint texture_id,
GLsizei width,
GLsizei height) {
Texture* texture = EnsureTextureBound(GetTexture(texture_id));
if (texture->use_buffer) {
DCHECK(use_texture_storage_image_);
gl_->TexStorage2DImageCHROMIUM(texture->target,
viz::TextureStorageFormat(texture->format),
GL_SCANOUT_CHROMIUM, width, height);
} else if (use_texture_storage_) {
gl_->TexStorage2DEXT(texture->target, /*levels=*/1,
viz::TextureStorageFormat(texture->format), width,
height);
} else {
DCHECK(GLSupportsFormat(texture->format));
gl_->TexImage2D(texture->target, 0, viz::GLInternalFormat(texture->format),
width, height, 0, viz::GLDataFormat(texture->format),
viz::GLDataType(texture->format), nullptr);
}
}
void RasterImplementationGLES::CopySubTexture(GLuint source_id, void RasterImplementationGLES::CopySubTexture(GLuint source_id,
GLuint dest_id, GLuint dest_id,
GLint xoffset, GLint xoffset,
...@@ -293,20 +179,6 @@ void RasterImplementationGLES::CopySubTexture(GLuint source_id, ...@@ -293,20 +179,6 @@ void RasterImplementationGLES::CopySubTexture(GLuint source_id,
false); false);
} }
void RasterImplementationGLES::UnpremultiplyAndDitherCopyCHROMIUM(
GLuint source_id,
GLuint dest_id,
GLint x,
GLint y,
GLsizei width,
GLsizei height) {
Texture* source = GetTexture(source_id);
Texture* dest = GetTexture(dest_id);
gl_->UnpremultiplyAndDitherCopyCHROMIUM(source->id, dest->id, x, y, width,
height);
}
void RasterImplementationGLES::BeginRasterCHROMIUM( void RasterImplementationGLES::BeginRasterCHROMIUM(
GLuint sk_color, GLuint sk_color,
GLuint msaa_sample_count, GLuint msaa_sample_count,
......
...@@ -45,7 +45,6 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface { ...@@ -45,7 +45,6 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface {
// Command buffer state. // Command buffer state.
GLenum GetError() override; GLenum GetError() override;
GLenum GetGraphicsResetStatusKHR() override; GLenum GetGraphicsResetStatusKHR() override;
void GetIntegerv(GLenum pname, GLint* params) override;
void LoseContextCHROMIUM(GLenum current, GLenum other) override; void LoseContextCHROMIUM(GLenum current, GLenum other) override;
// Queries: GL_COMMANDS_ISSUED_CHROMIUM / GL_COMMANDS_COMPLETED_CHROMIUM. // Queries: GL_COMMANDS_ISSUED_CHROMIUM / GL_COMMANDS_COMPLETED_CHROMIUM.
...@@ -56,35 +55,15 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface { ...@@ -56,35 +55,15 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface {
void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) override; void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) override;
// Texture objects. // Texture objects.
GLuint CreateTexture(bool use_buffer,
gfx::BufferUsage buffer_usage,
viz::ResourceFormat format) override;
void DeleteTextures(GLsizei n, const GLuint* textures) override; void DeleteTextures(GLsizei n, const GLuint* textures) override;
void SetColorSpaceMetadata(GLuint texture_id,
GLColorSpace color_space) override;
void TexParameteri(GLuint texture_id, GLenum pname, GLint param) override;
// Mailboxes. // Mailboxes.
void ProduceTextureDirect(GLuint texture, GLbyte* mailbox) override;
GLuint CreateAndConsumeTexture(bool use_buffer, GLuint CreateAndConsumeTexture(bool use_buffer,
gfx::BufferUsage buffer_usage, gfx::BufferUsage buffer_usage,
viz::ResourceFormat format, viz::ResourceFormat format,
const GLbyte* mailbox) override; const GLbyte* mailbox) override;
// Image objects. // Texture copying.
GLuint CreateImageCHROMIUM(ClientBuffer buffer,
GLsizei width,
GLsizei height,
GLenum internalformat) override;
void BindTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) override;
void ReleaseTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) override;
void DestroyImageCHROMIUM(GLuint image_id) override;
// Texture allocation and copying.
void TexStorage2D(GLuint texture_id,
GLsizei width,
GLsizei height) override;
void CopySubTexture(GLuint source_id, void CopySubTexture(GLuint source_id,
GLuint dest_id, GLuint dest_id,
GLint xoffset, GLint xoffset,
...@@ -93,12 +72,6 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface { ...@@ -93,12 +72,6 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface {
GLint y, GLint y,
GLsizei width, GLsizei width,
GLsizei height) override; GLsizei height) override;
void UnpremultiplyAndDitherCopyCHROMIUM(GLuint source_id,
GLuint dest_id,
GLint x,
GLint y,
GLsizei width,
GLsizei height) override;
// OOP-Raster // OOP-Raster
void BeginRasterCHROMIUM(GLuint sk_color, void BeginRasterCHROMIUM(GLuint sk_color,
...@@ -142,12 +115,9 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface { ...@@ -142,12 +115,9 @@ class RASTER_EXPORT RasterImplementationGLES : public RasterInterface {
}; };
Texture* GetTexture(GLuint texture_id); Texture* GetTexture(GLuint texture_id);
Texture* EnsureTextureBound(Texture* texture);
gles2::GLES2Interface* gl_; gles2::GLES2Interface* gl_;
gpu::Capabilities caps_; gpu::Capabilities caps_;
bool use_texture_storage_;
bool use_texture_storage_image_;
std::unordered_map<GLuint, Texture> texture_info_; std::unordered_map<GLuint, Texture> texture_info_;
......
...@@ -261,17 +261,6 @@ class RasterImplementationGLESTest : public testing::Test { ...@@ -261,17 +261,6 @@ class RasterImplementationGLESTest : public testing::Test {
} }
} }
void AllocTextureId(bool use_buffer,
gfx::BufferUsage buffer_usage,
viz::ResourceFormat format,
GLuint texture_id) {
GLuint ret_id = 0;
EXPECT_CALL(*gl_, GenTextures(1, _)).WillOnce(SetArgPointee<1>(texture_id));
ret_id = ri_->CreateTexture(use_buffer, buffer_usage, format);
EXPECT_EQ(ret_id, texture_id);
}
ContextSupportStub support_; ContextSupportStub support_;
std::unique_ptr<RasterMockGLES2Interface> gl_; std::unique_ptr<RasterMockGLES2Interface> gl_;
std::unique_ptr<RasterImplementationGLES> ri_; std::unique_ptr<RasterImplementationGLES> ri_;
...@@ -347,16 +336,6 @@ TEST_F(RasterImplementationGLESTest, GetGraphicsResetStatusKHR) { ...@@ -347,16 +336,6 @@ TEST_F(RasterImplementationGLESTest, GetGraphicsResetStatusKHR) {
EXPECT_EQ(kGraphicsResetStatus, status); EXPECT_EQ(kGraphicsResetStatus, status);
} }
TEST_F(RasterImplementationGLESTest, GetIntegerv) {
const GLint kActiveTexture = 3;
GLint active_texture = 0;
EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, &active_texture))
.WillOnce(SetArgPointee<1>(kActiveTexture));
ri_->GetIntegerv(GL_ACTIVE_TEXTURE, &active_texture);
EXPECT_EQ(kActiveTexture, active_texture);
}
TEST_F(RasterImplementationGLESTest, LoseContextCHROMIUM) { TEST_F(RasterImplementationGLESTest, LoseContextCHROMIUM) {
const GLenum kCurrent = GL_GUILTY_CONTEXT_RESET_ARB; const GLenum kCurrent = GL_GUILTY_CONTEXT_RESET_ARB;
const GLenum kOther = GL_INNOCENT_CONTEXT_RESET_ARB; const GLenum kOther = GL_INNOCENT_CONTEXT_RESET_ARB;
...@@ -409,51 +388,22 @@ TEST_F(RasterImplementationGLESTest, GetQueryObjectuivEXT) { ...@@ -409,51 +388,22 @@ TEST_F(RasterImplementationGLESTest, GetQueryObjectuivEXT) {
TEST_F(RasterImplementationGLESTest, DeleteTextures) { TEST_F(RasterImplementationGLESTest, DeleteTextures) {
const GLsizei kNumTextures = 2; const GLsizei kNumTextures = 2;
GLuint texture_ids[kNumTextures] = {2, 3}; GLuint texture_ids[kNumTextures] = {2, 3};
AllocTextureId(false, gfx::BufferUsage::GPU_READ, viz::RGBA_8888,
texture_ids[0]);
AllocTextureId(false, gfx::BufferUsage::GPU_READ, viz::RGBA_8888,
texture_ids[1]);
EXPECT_CALL(*gl_, DeleteTextures(kNumTextures, texture_ids)).Times(1);
ri_->DeleteTextures(kNumTextures, texture_ids);
}
TEST_F(RasterImplementationGLESTest, SetColorSpaceMetadata) {
const GLuint kTextureId = 23;
gfx::ColorSpace color_space;
AllocTextureId(true, gfx::BufferUsage::SCANOUT, viz::RGBA_8888, kTextureId);
EXPECT_CALL(*gl_,
SetColorSpaceMetadataCHROMIUM(
kTextureId, reinterpret_cast<GLColorSpace>(&color_space)))
.Times(1);
ri_->SetColorSpaceMetadata(kTextureId,
reinterpret_cast<GLColorSpace>(&color_space));
}
TEST_F(RasterImplementationGLESTest, TexParameteri) {
const GLenum kTarget = GL_TEXTURE_2D;
const GLuint kTextureId = 23;
const GLenum kPname = GL_TEXTURE_MIN_FILTER;
const GLint kParam = GL_NEAREST;
AllocTextureId(false, gfx::BufferUsage::GPU_READ, viz::RGBA_8888, kTextureId);
ExpectBindTexture(kTarget, kTextureId);
EXPECT_CALL(*gl_, TexParameteri(kTarget, kPname, kParam)).Times(1);
ri_->TexParameteri(kTextureId, kPname, kParam);
}
TEST_F(RasterImplementationGLESTest, ProduceTextureDirect) {
const GLuint kTextureId = 23;
gpu::Mailbox mailbox; gpu::Mailbox mailbox;
AllocTextureId(false, gfx::BufferUsage::GPU_READ, viz::RGBA_8888, kTextureId); EXPECT_CALL(*gl_, CreateAndConsumeTextureCHROMIUM(mailbox.name))
.WillOnce(Return(texture_ids[0]))
.RetiresOnSaturation();
EXPECT_CALL(*gl_, CreateAndConsumeTextureCHROMIUM(mailbox.name))
.WillOnce(Return(texture_ids[1]))
.RetiresOnSaturation();
EXPECT_CALL(*gl_, ProduceTextureDirectCHROMIUM(kTextureId, mailbox.name)) ri_->CreateAndConsumeTexture(false, gfx::BufferUsage::GPU_READ,
.Times(1); viz::RGBA_8888, mailbox.name);
ri_->CreateAndConsumeTexture(false, gfx::BufferUsage::GPU_READ,
viz::RGBA_8888, mailbox.name);
ri_->ProduceTextureDirect(kTextureId, mailbox.name); EXPECT_CALL(*gl_, DeleteTextures(kNumTextures, texture_ids)).Times(1);
ri_->DeleteTextures(kNumTextures, texture_ids);
} }
TEST_F(RasterImplementationGLESTest, CreateAndConsumeTexture) { TEST_F(RasterImplementationGLESTest, CreateAndConsumeTexture) {
...@@ -468,156 +418,6 @@ TEST_F(RasterImplementationGLESTest, CreateAndConsumeTexture) { ...@@ -468,156 +418,6 @@ TEST_F(RasterImplementationGLESTest, CreateAndConsumeTexture) {
EXPECT_EQ(kTextureId, texture_id); EXPECT_EQ(kTextureId, texture_id);
} }
TEST_F(RasterImplementationGLESTest, CreateImageCHROMIUM) {
const GLsizei kWidth = 256;
const GLsizei kHeight = 128;
const GLenum kInternalFormat = GL_RGBA;
const GLint kImageId = 23;
const ClientBuffer client_buffer = 0;
GLint image_id = 0;
EXPECT_CALL(*gl_, CreateImageCHROMIUM(client_buffer, kWidth, kHeight,
kInternalFormat))
.WillOnce(Return(kImageId));
image_id =
ri_->CreateImageCHROMIUM(client_buffer, kWidth, kHeight, kInternalFormat);
EXPECT_EQ(kImageId, image_id);
}
TEST_F(RasterImplementationGLESTest, BindTexImage2DCHROMIUM) {
const GLenum kTarget = GL_TEXTURE_2D;
const GLint kTextureId = 22;
const GLint kImageId = 23;
AllocTextureId(false, gfx::BufferUsage::SCANOUT, viz::RGBA_8888, kTextureId);
EXPECT_CALL(*gl_, BindTexImage2DCHROMIUM(kTarget, kImageId)).Times(1);
ri_->BindTexImage2DCHROMIUM(kTextureId, kImageId);
}
TEST_F(RasterImplementationGLESTest, ReleaseTexImage2DCHROMIUM) {
const GLenum kTarget = GL_TEXTURE_2D;
const GLint kTextureId = 22;
const GLint kImageId = 23;
AllocTextureId(false, gfx::BufferUsage::SCANOUT, viz::RGBA_8888, kTextureId);
EXPECT_CALL(*gl_, ReleaseTexImage2DCHROMIUM(kTarget, kImageId)).Times(1);
ri_->ReleaseTexImage2DCHROMIUM(kTextureId, kImageId);
}
TEST_F(RasterImplementationGLESTest, DestroyImageCHROMIUM) {
const GLint kImageId = 23;
EXPECT_CALL(*gl_, DestroyImageCHROMIUM(kImageId)).Times(1);
ri_->DestroyImageCHROMIUM(kImageId);
}
TEST_F(RasterImplementationGLESTest, TexStorage2D) {
const GLenum kTarget = GL_TEXTURE_2D;
const GLsizei kWidth = 2;
const GLsizei kHeight = 8;
const int kNumTestFormats = 11;
viz::ResourceFormat test_formats[kNumTestFormats] = {
viz::RGBA_8888, viz::RGBA_4444, viz::BGRA_8888, viz::ALPHA_8,
viz::LUMINANCE_8, viz::RGB_565, viz::RED_8, viz::LUMINANCE_F16,
viz::RGBA_F16, viz::R16_EXT};
for (int i = 0; i < kNumTestFormats; i++) {
const GLuint kTextureId = 23 + i;
viz::ResourceFormat format = test_formats[i];
AllocTextureId(false, gfx::BufferUsage::GPU_READ, format, kTextureId);
ExpectBindTexture(kTarget, kTextureId);
EXPECT_CALL(*gl_, TexImage2D(kTarget, 0, viz::GLInternalFormat(format),
kWidth, kHeight, 0, viz::GLDataFormat(format),
viz::GLDataType(format), nullptr))
.Times(1);
ri_->TexStorage2D(kTextureId, kWidth, kHeight);
}
}
TEST_F(RasterImplementationGLESTest, TexStorage2DTexStorage2DEXT) {
gpu::Capabilities capabilities;
capabilities.texture_storage = true;
SetUpWithCapabilities(capabilities);
const GLenum kTarget = GL_TEXTURE_2D;
const GLsizei kWidth = 2;
const GLsizei kHeight = 8;
const int kNumTestFormats = 10;
const int kLevels = 1;
viz::ResourceFormat test_formats[kNumTestFormats] = {
viz::RGBA_8888, viz::RGBA_4444, viz::BGRA_8888, viz::ALPHA_8,
viz::LUMINANCE_8, viz::RGB_565, viz::RED_8, viz::LUMINANCE_F16,
viz::RGBA_F16, viz::R16_EXT};
for (int i = 0; i < kNumTestFormats; i++) {
const GLuint kTextureId = 23 + i;
viz::ResourceFormat format = test_formats[i];
AllocTextureId(false, gfx::BufferUsage::GPU_READ, format, kTextureId);
ExpectBindTexture(kTarget, kTextureId);
EXPECT_CALL(*gl_, TexStorage2DEXT(kTarget, kLevels,
viz::TextureStorageFormat(format), kWidth,
kHeight))
.Times(1);
ri_->TexStorage2D(kTextureId, kWidth, kHeight);
}
}
TEST_F(RasterImplementationGLESTest, TexStorage2DOverlay) {
gpu::Capabilities capabilities;
capabilities.texture_storage_image = true;
SetUpWithCapabilities(capabilities);
const GLenum kTarget = GL_TEXTURE_2D;
const GLsizei kWidth = 2;
const GLsizei kHeight = 8;
const int kNumTestFormats = 6;
viz::ResourceFormat test_formats[kNumTestFormats] = {
viz::RGBA_8888, viz::RGBA_4444, viz::BGRA_8888,
viz::RED_8, viz::RGBA_F16, viz::R16_EXT};
for (int i = 0; i < kNumTestFormats; i++) {
const GLuint kTextureId = 23 + i;
viz::ResourceFormat format = test_formats[i];
AllocTextureId(true, gfx::BufferUsage::SCANOUT, format, kTextureId);
ExpectBindTexture(kTarget, kTextureId);
EXPECT_CALL(*gl_, TexStorage2DImageCHROMIUM(
kTarget, viz::TextureStorageFormat(format),
GL_SCANOUT_CHROMIUM, kWidth, kHeight))
.Times(1);
ri_->TexStorage2D(kTextureId, kWidth, kHeight);
}
}
TEST_F(RasterImplementationGLESTest, TexStorage2DOverlayNative) {
const GLenum target = gpu::GetPlatformSpecificTextureTarget();
const GLsizei kWidth = 2;
const GLsizei kHeight = 8;
const int kNumTestFormats = 6;
viz::ResourceFormat test_formats[kNumTestFormats] = {
viz::RGBA_8888, viz::RGBA_4444, viz::BGRA_8888,
viz::RED_8, viz::RGBA_F16, viz::R16_EXT};
gpu::Capabilities capabilities;
capabilities.texture_storage_image = true;
for (int i = 0; i < kNumTestFormats; i++) {
capabilities.texture_target_exception_list.emplace_back(
gfx::BufferUsage::SCANOUT, viz::BufferFormat(test_formats[i]));
}
SetUpWithCapabilities(capabilities);
for (int i = 0; i < kNumTestFormats; i++) {
const GLuint kTextureId = 23 + i;
viz::ResourceFormat format = test_formats[i];
AllocTextureId(true, gfx::BufferUsage::SCANOUT, format, kTextureId);
ExpectBindTexture(target, kTextureId);
EXPECT_CALL(*gl_, TexStorage2DImageCHROMIUM(
target, viz::TextureStorageFormat(format),
GL_SCANOUT_CHROMIUM, kWidth, kHeight))
.Times(1);
ri_->TexStorage2D(kTextureId, kWidth, kHeight);
}
}
TEST_F(RasterImplementationGLESTest, BeginGpuRaster) { TEST_F(RasterImplementationGLESTest, BeginGpuRaster) {
EXPECT_CALL(*gl_, TraceBeginCHROMIUM(StrEq("BeginGpuRaster"), EXPECT_CALL(*gl_, TraceBeginCHROMIUM(StrEq("BeginGpuRaster"),
StrEq("GpuRasterization"))) StrEq("GpuRasterization")))
......
...@@ -35,32 +35,6 @@ void RasterImplementation::DeleteTextures(GLsizei n, const GLuint* textures) { ...@@ -35,32 +35,6 @@ void RasterImplementation::DeleteTextures(GLsizei n, const GLuint* textures) {
CheckGLError(); CheckGLError();
} }
void RasterImplementation::GetIntegerv(GLenum pname, GLint* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetIntegerv("
<< GLES2Util::GetStringGLState(pname) << ", "
<< static_cast<const void*>(params) << ")");
TRACE_EVENT0("gpu", "RasterImplementation::GetIntegerv");
if (GetIntegervHelper(pname, params)) {
return;
}
typedef cmds::GetIntegerv::Result Result;
ScopedResultPtr<Result> result = GetResultAs<Result>();
if (!result) {
return;
}
result->SetNumResults(0);
helper_->GetIntegerv(pname, GetResultShmId(), result.offset());
WaitForCmd();
result->CopyResult(params);
GPU_CLIENT_LOG_CODE_BLOCK({
for (int32_t i = 0; i < result->GetNumResults(); ++i) {
GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
}
});
CheckGLError();
}
void RasterImplementation::GenQueriesEXT(GLsizei n, GLuint* queries) { void RasterImplementation::GenQueriesEXT(GLsizei n, GLuint* queries) {
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenQueriesEXT(" << n << ", " GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenQueriesEXT(" << n << ", "
<< static_cast<const void*>(queries) << ")"); << static_cast<const void*>(queries) << ")");
...@@ -113,95 +87,6 @@ void RasterImplementation::LoseContextCHROMIUM(GLenum current, GLenum other) { ...@@ -113,95 +87,6 @@ void RasterImplementation::LoseContextCHROMIUM(GLenum current, GLenum other) {
CheckGLError(); CheckGLError();
} }
void RasterImplementation::UnpremultiplyAndDitherCopyCHROMIUM(GLuint source_id,
GLuint dest_id,
GLint x,
GLint y,
GLsizei width,
GLsizei height) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix()
<< "] glUnpremultiplyAndDitherCopyCHROMIUM(" << source_id
<< ", " << dest_id << ", " << x << ", " << y << ", "
<< width << ", " << height << ")");
if (width < 0) {
SetGLError(GL_INVALID_VALUE, "glUnpremultiplyAndDitherCopyCHROMIUM",
"width < 0");
return;
}
if (height < 0) {
SetGLError(GL_INVALID_VALUE, "glUnpremultiplyAndDitherCopyCHROMIUM",
"height < 0");
return;
}
helper_->UnpremultiplyAndDitherCopyCHROMIUM(source_id, dest_id, x, y, width,
height);
CheckGLError();
}
GLuint RasterImplementation::CreateTexture(bool use_buffer,
gfx::BufferUsage buffer_usage,
viz::ResourceFormat format) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateTexture(" << use_buffer
<< ", " << static_cast<uint32_t>(buffer_usage) << ", "
<< static_cast<uint32_t>(format) << ")");
GLuint client_id;
IdAllocator* id_allocator = GetIdAllocator(IdNamespaces::kTextures);
client_id = id_allocator->AllocateID();
helper_->CreateTexture(use_buffer, buffer_usage, format, client_id);
GPU_CLIENT_LOG("returned " << client_id);
CheckGLError();
return client_id;
}
void RasterImplementation::TexParameteri(GLuint texture_id,
GLenum pname,
GLint param) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameteri(" << texture_id
<< ", " << GLES2Util::GetStringTextureParameter(pname)
<< ", " << param << ")");
helper_->TexParameteri(texture_id, pname, param);
CheckGLError();
}
void RasterImplementation::BindTexImage2DCHROMIUM(GLuint texture_id,
GLint image_id) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTexImage2DCHROMIUM("
<< texture_id << ", " << image_id << ")");
helper_->BindTexImage2DCHROMIUM(texture_id, image_id);
CheckGLError();
}
void RasterImplementation::ReleaseTexImage2DCHROMIUM(GLuint texture_id,
GLint image_id) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glReleaseTexImage2DCHROMIUM("
<< texture_id << ", " << image_id << ")");
helper_->ReleaseTexImage2DCHROMIUM(texture_id, image_id);
CheckGLError();
}
void RasterImplementation::TexStorage2D(GLuint texture_id,
GLsizei width,
GLsizei height) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexStorage2D(" << texture_id
<< ", " << width << ", " << height << ")");
if (width < 0) {
SetGLError(GL_INVALID_VALUE, "glTexStorage2D", "width < 0");
return;
}
if (height < 0) {
SetGLError(GL_INVALID_VALUE, "glTexStorage2D", "height < 0");
return;
}
helper_->TexStorage2D(texture_id, width, height);
CheckGLError();
}
void RasterImplementation::CopySubTexture(GLuint source_id, void RasterImplementation::CopySubTexture(GLuint source_id,
GLuint dest_id, GLuint dest_id,
GLint xoffset, GLint xoffset,
......
...@@ -394,36 +394,6 @@ TEST_F(RasterImplementationTest, GetBucketContents) { ...@@ -394,36 +394,6 @@ TEST_F(RasterImplementationTest, GetBucketContents) {
EXPECT_EQ(0, memcmp(expected_data, &data[0], data.size())); EXPECT_EQ(0, memcmp(expected_data, &data[0], data.size()));
} }
// Test that things are cached
TEST_F(RasterImplementationTest, GetIntegerCacheRead) {
struct PNameValue {
GLenum pname;
GLint expected;
};
const PNameValue pairs[] = {{
GL_ACTIVE_TEXTURE, GL_TEXTURE0,
},
{
GL_TEXTURE_BINDING_2D, 0,
}};
size_t num_pairs = sizeof(pairs) / sizeof(pairs[0]);
for (size_t ii = 0; ii < num_pairs; ++ii) {
const PNameValue& pv = pairs[ii];
GLint v = -1;
gl_->GetIntegerv(pv.pname, &v);
EXPECT_TRUE(NoCommandsWritten());
EXPECT_EQ(pv.expected, v);
}
ExpectedMemoryInfo result1 =
GetExpectedResultMemory(sizeof(cmds::GetError::Result));
EXPECT_CALL(*command_buffer(), OnFlush())
.WillOnce(SetMemory(result1.ptr, GLuint(GL_NO_ERROR)))
.RetiresOnSaturation();
EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), gl_->GetError());
}
TEST_F(RasterImplementationTest, BeginEndQueryEXT) { TEST_F(RasterImplementationTest, BeginEndQueryEXT) {
// GL_COMMANDS_COMPLETED_CHROMIUM, // GL_COMMANDS_COMPLETED_CHROMIUM,
// GL_CURRENT_QUERY_EXT // GL_CURRENT_QUERY_EXT
......
...@@ -38,24 +38,6 @@ TEST_F(RasterImplementationTest, Flush) { ...@@ -38,24 +38,6 @@ TEST_F(RasterImplementationTest, Flush) {
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
} }
TEST_F(RasterImplementationTest, GetIntegerv) {
struct Cmds {
cmds::GetIntegerv cmd;
};
typedef cmds::GetIntegerv::Result::Type ResultType;
ResultType result = 0;
Cmds expected;
ExpectedMemoryInfo result1 =
GetExpectedResultMemory(sizeof(uint32_t) + sizeof(ResultType));
expected.cmd.Init(123, result1.id, result1.offset);
EXPECT_CALL(*command_buffer(), OnFlush())
.WillOnce(SetMemory(result1.ptr, SizedResultHelper<ResultType>(1)))
.RetiresOnSaturation();
gl_->GetIntegerv(123, &result);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
EXPECT_EQ(static_cast<ResultType>(1), result);
}
TEST_F(RasterImplementationTest, GenQueriesEXT) { TEST_F(RasterImplementationTest, GenQueriesEXT) {
GLuint ids[2] = { GLuint ids[2] = {
0, 0,
...@@ -100,50 +82,6 @@ TEST_F(RasterImplementationTest, LoseContextCHROMIUM) { ...@@ -100,50 +82,6 @@ TEST_F(RasterImplementationTest, LoseContextCHROMIUM) {
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
} }
TEST_F(RasterImplementationTest, TexParameteri) {
struct Cmds {
cmds::TexParameteri cmd;
};
Cmds expected;
expected.cmd.Init(1, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
gl_->TexParameteri(1, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
TEST_F(RasterImplementationTest, BindTexImage2DCHROMIUM) {
struct Cmds {
cmds::BindTexImage2DCHROMIUM cmd;
};
Cmds expected;
expected.cmd.Init(1, 2);
gl_->BindTexImage2DCHROMIUM(1, 2);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
TEST_F(RasterImplementationTest, ReleaseTexImage2DCHROMIUM) {
struct Cmds {
cmds::ReleaseTexImage2DCHROMIUM cmd;
};
Cmds expected;
expected.cmd.Init(1, 2);
gl_->ReleaseTexImage2DCHROMIUM(1, 2);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
TEST_F(RasterImplementationTest, TexStorage2D) {
struct Cmds {
cmds::TexStorage2D cmd;
};
Cmds expected;
expected.cmd.Init(1, 2, 3);
gl_->TexStorage2D(1, 2, 3);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
TEST_F(RasterImplementationTest, CopySubTexture) { TEST_F(RasterImplementationTest, CopySubTexture) {
struct Cmds { struct Cmds {
cmds::CopySubTexture cmd; cmds::CopySubTexture cmd;
......
...@@ -17,7 +17,6 @@ virtual void DeleteTextures(GLsizei n, const GLuint* textures) = 0; ...@@ -17,7 +17,6 @@ virtual void DeleteTextures(GLsizei n, const GLuint* textures) = 0;
virtual void Finish() = 0; virtual void Finish() = 0;
virtual void Flush() = 0; virtual void Flush() = 0;
virtual GLenum GetError() = 0; virtual GLenum GetError() = 0;
virtual void GetIntegerv(GLenum pname, GLint* params) = 0;
virtual void ShallowFlushCHROMIUM() = 0; virtual void ShallowFlushCHROMIUM() = 0;
virtual void OrderingBarrierCHROMIUM() = 0; virtual void OrderingBarrierCHROMIUM() = 0;
virtual void GenQueriesEXT(GLsizei n, GLuint* queries) = 0; virtual void GenQueriesEXT(GLsizei n, GLuint* queries) = 0;
...@@ -25,38 +24,17 @@ virtual void DeleteQueriesEXT(GLsizei n, const GLuint* queries) = 0; ...@@ -25,38 +24,17 @@ virtual void DeleteQueriesEXT(GLsizei n, const GLuint* queries) = 0;
virtual void BeginQueryEXT(GLenum target, GLuint id) = 0; virtual void BeginQueryEXT(GLenum target, GLuint id) = 0;
virtual void EndQueryEXT(GLenum target) = 0; virtual void EndQueryEXT(GLenum target) = 0;
virtual void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) = 0; virtual void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) = 0;
virtual GLuint CreateImageCHROMIUM(ClientBuffer buffer,
GLsizei width,
GLsizei height,
GLenum internalformat) = 0;
virtual void DestroyImageCHROMIUM(GLuint image_id) = 0;
virtual void LoseContextCHROMIUM(GLenum current, GLenum other) = 0; virtual void LoseContextCHROMIUM(GLenum current, GLenum other) = 0;
virtual void GenSyncTokenCHROMIUM(GLbyte* sync_token) = 0; virtual void GenSyncTokenCHROMIUM(GLbyte* sync_token) = 0;
virtual void GenUnverifiedSyncTokenCHROMIUM(GLbyte* sync_token) = 0; virtual void GenUnverifiedSyncTokenCHROMIUM(GLbyte* sync_token) = 0;
virtual void VerifySyncTokensCHROMIUM(GLbyte** sync_tokens, GLsizei count) = 0; virtual void VerifySyncTokensCHROMIUM(GLbyte** sync_tokens, GLsizei count) = 0;
virtual void WaitSyncTokenCHROMIUM(const GLbyte* sync_token) = 0; virtual void WaitSyncTokenCHROMIUM(const GLbyte* sync_token) = 0;
virtual void UnpremultiplyAndDitherCopyCHROMIUM(GLuint source_id,
GLuint dest_id,
GLint x,
GLint y,
GLsizei width,
GLsizei height) = 0;
virtual GLenum GetGraphicsResetStatusKHR() = 0; virtual GLenum GetGraphicsResetStatusKHR() = 0;
virtual void EndRasterCHROMIUM() = 0; virtual void EndRasterCHROMIUM() = 0;
virtual GLuint CreateTexture(bool use_buffer,
gfx::BufferUsage buffer_usage,
viz::ResourceFormat format) = 0;
virtual void SetColorSpaceMetadata(GLuint texture_id,
GLColorSpace color_space) = 0;
virtual void ProduceTextureDirect(GLuint texture, GLbyte* mailbox) = 0;
virtual GLuint CreateAndConsumeTexture(bool use_buffer, virtual GLuint CreateAndConsumeTexture(bool use_buffer,
gfx::BufferUsage buffer_usage, gfx::BufferUsage buffer_usage,
viz::ResourceFormat format, viz::ResourceFormat format,
const GLbyte* mailbox) = 0; const GLbyte* mailbox) = 0;
virtual void TexParameteri(GLuint texture_id, GLenum pname, GLint param) = 0;
virtual void BindTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) = 0;
virtual void ReleaseTexImage2DCHROMIUM(GLuint texture_id, GLint image_id) = 0;
virtual void TexStorage2D(GLuint texture_id, GLsizei width, GLsizei height) = 0;
virtual void CopySubTexture(GLuint source_id, virtual void CopySubTexture(GLuint source_id,
GLuint dest_id, GLuint dest_id,
GLint xoffset, GLint xoffset,
......
...@@ -59,20 +59,6 @@ TEST_F(RasterFormatTest, GetError) { ...@@ -59,20 +59,6 @@ TEST_F(RasterFormatTest, GetError) {
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
} }
TEST_F(RasterFormatTest, GetIntegerv) {
cmds::GetIntegerv& cmd = *GetBufferAs<cmds::GetIntegerv>();
void* next_cmd =
cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<uint32_t>(12),
static_cast<uint32_t>(13));
EXPECT_EQ(static_cast<uint32_t>(cmds::GetIntegerv::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLenum>(11), cmd.pname);
EXPECT_EQ(static_cast<uint32_t>(12), cmd.params_shm_id);
EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_offset);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, GenQueriesEXTImmediate) { TEST_F(RasterFormatTest, GenQueriesEXTImmediate) {
static GLuint ids[] = { static GLuint ids[] = {
12, 23, 34, 12, 23, 34,
...@@ -174,26 +160,6 @@ TEST_F(RasterFormatTest, WaitSyncTokenCHROMIUM) { ...@@ -174,26 +160,6 @@ TEST_F(RasterFormatTest, WaitSyncTokenCHROMIUM) {
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
} }
TEST_F(RasterFormatTest, UnpremultiplyAndDitherCopyCHROMIUM) {
cmds::UnpremultiplyAndDitherCopyCHROMIUM& cmd =
*GetBufferAs<cmds::UnpremultiplyAndDitherCopyCHROMIUM>();
void* next_cmd =
cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12),
static_cast<GLint>(13), static_cast<GLint>(14),
static_cast<GLsizei>(15), static_cast<GLsizei>(16));
EXPECT_EQ(
static_cast<uint32_t>(cmds::UnpremultiplyAndDitherCopyCHROMIUM::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.source_id);
EXPECT_EQ(static_cast<GLuint>(12), cmd.dest_id);
EXPECT_EQ(static_cast<GLint>(13), cmd.x);
EXPECT_EQ(static_cast<GLint>(14), cmd.y);
EXPECT_EQ(static_cast<GLsizei>(15), cmd.width);
EXPECT_EQ(static_cast<GLsizei>(16), cmd.height);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, BeginRasterCHROMIUMImmediate) { TEST_F(RasterFormatTest, BeginRasterCHROMIUMImmediate) {
const int kSomeBaseValueToTestWith = 51; const int kSomeBaseValueToTestWith = 51;
static GLbyte data[] = { static GLbyte data[] = {
...@@ -357,71 +323,6 @@ TEST_F(RasterFormatTest, ClearPaintCacheINTERNAL) { ...@@ -357,71 +323,6 @@ TEST_F(RasterFormatTest, ClearPaintCacheINTERNAL) {
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
} }
TEST_F(RasterFormatTest, CreateTexture) {
cmds::CreateTexture& cmd = *GetBufferAs<cmds::CreateTexture>();
void* next_cmd =
cmd.Set(&cmd, static_cast<bool>(11), static_cast<gfx::BufferUsage>(12),
static_cast<viz::ResourceFormat>(13), static_cast<uint32_t>(14));
EXPECT_EQ(static_cast<uint32_t>(cmds::CreateTexture::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<bool>(11), static_cast<bool>(cmd.use_buffer));
EXPECT_EQ(static_cast<gfx::BufferUsage>(12),
static_cast<gfx::BufferUsage>(cmd.buffer_usage));
EXPECT_EQ(static_cast<viz::ResourceFormat>(13),
static_cast<viz::ResourceFormat>(cmd.format));
EXPECT_EQ(static_cast<uint32_t>(14), cmd.client_id);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, SetColorSpaceMetadata) {
cmds::SetColorSpaceMetadata& cmd =
*GetBufferAs<cmds::SetColorSpaceMetadata>();
void* next_cmd =
cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12),
static_cast<GLuint>(13), static_cast<GLsizei>(14));
EXPECT_EQ(static_cast<uint32_t>(cmds::SetColorSpaceMetadata::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.texture_id);
EXPECT_EQ(static_cast<GLuint>(12), cmd.shm_id);
EXPECT_EQ(static_cast<GLuint>(13), cmd.shm_offset);
EXPECT_EQ(static_cast<GLsizei>(14), cmd.color_space_size);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, ProduceTextureDirectImmediate) {
const int kSomeBaseValueToTestWith = 51;
static GLbyte data[] = {
static_cast<GLbyte>(kSomeBaseValueToTestWith + 0),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 1),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 2),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 3),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 4),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 5),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 6),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 7),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 8),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 9),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 10),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 11),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 12),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 13),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 14),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 15),
};
cmds::ProduceTextureDirectImmediate& cmd =
*GetBufferAs<cmds::ProduceTextureDirectImmediate>();
void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
EXPECT_EQ(static_cast<uint32_t>(cmds::ProduceTextureDirectImmediate::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.texture);
CheckBytesWrittenMatchesExpectedSize(
next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
}
TEST_F(RasterFormatTest, CreateAndConsumeTextureINTERNALImmediate) { TEST_F(RasterFormatTest, CreateAndConsumeTextureINTERNALImmediate) {
const int kSomeBaseValueToTestWith = 51; const int kSomeBaseValueToTestWith = 51;
static GLbyte data[] = { static GLbyte data[] = {
...@@ -462,58 +363,6 @@ TEST_F(RasterFormatTest, CreateAndConsumeTextureINTERNALImmediate) { ...@@ -462,58 +363,6 @@ TEST_F(RasterFormatTest, CreateAndConsumeTextureINTERNALImmediate) {
next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data))); next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
} }
TEST_F(RasterFormatTest, TexParameteri) {
cmds::TexParameteri& cmd = *GetBufferAs<cmds::TexParameteri>();
void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
static_cast<GLenum>(12), static_cast<GLint>(13));
EXPECT_EQ(static_cast<uint32_t>(cmds::TexParameteri::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.texture_id);
EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
EXPECT_EQ(static_cast<GLint>(13), cmd.param);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, BindTexImage2DCHROMIUM) {
cmds::BindTexImage2DCHROMIUM& cmd =
*GetBufferAs<cmds::BindTexImage2DCHROMIUM>();
void* next_cmd =
cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLint>(12));
EXPECT_EQ(static_cast<uint32_t>(cmds::BindTexImage2DCHROMIUM::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.texture_id);
EXPECT_EQ(static_cast<GLint>(12), cmd.image_id);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, ReleaseTexImage2DCHROMIUM) {
cmds::ReleaseTexImage2DCHROMIUM& cmd =
*GetBufferAs<cmds::ReleaseTexImage2DCHROMIUM>();
void* next_cmd =
cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLint>(12));
EXPECT_EQ(static_cast<uint32_t>(cmds::ReleaseTexImage2DCHROMIUM::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.texture_id);
EXPECT_EQ(static_cast<GLint>(12), cmd.image_id);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, TexStorage2D) {
cmds::TexStorage2D& cmd = *GetBufferAs<cmds::TexStorage2D>();
void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11),
static_cast<GLsizei>(12), static_cast<GLsizei>(13));
EXPECT_EQ(static_cast<uint32_t>(cmds::TexStorage2D::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.texture_id);
EXPECT_EQ(static_cast<GLsizei>(12), cmd.width);
EXPECT_EQ(static_cast<GLsizei>(13), cmd.height);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}
TEST_F(RasterFormatTest, CopySubTexture) { TEST_F(RasterFormatTest, CopySubTexture) {
cmds::CopySubTexture& cmd = *GetBufferAs<cmds::CopySubTexture>(); cmds::CopySubTexture& cmd = *GetBufferAs<cmds::CopySubTexture>();
void* next_cmd = void* next_cmd =
......
...@@ -16,36 +16,27 @@ ...@@ -16,36 +16,27 @@
OP(Finish) /* 257 */ \ OP(Finish) /* 257 */ \
OP(Flush) /* 258 */ \ OP(Flush) /* 258 */ \
OP(GetError) /* 259 */ \ OP(GetError) /* 259 */ \
OP(GetIntegerv) /* 260 */ \ OP(GenQueriesEXTImmediate) /* 260 */ \
OP(GenQueriesEXTImmediate) /* 261 */ \ OP(DeleteQueriesEXTImmediate) /* 261 */ \
OP(DeleteQueriesEXTImmediate) /* 262 */ \ OP(BeginQueryEXT) /* 262 */ \
OP(BeginQueryEXT) /* 263 */ \ OP(EndQueryEXT) /* 263 */ \
OP(EndQueryEXT) /* 264 */ \ OP(LoseContextCHROMIUM) /* 264 */ \
OP(LoseContextCHROMIUM) /* 265 */ \ OP(InsertFenceSyncCHROMIUM) /* 265 */ \
OP(InsertFenceSyncCHROMIUM) /* 266 */ \ OP(WaitSyncTokenCHROMIUM) /* 266 */ \
OP(WaitSyncTokenCHROMIUM) /* 267 */ \ OP(BeginRasterCHROMIUMImmediate) /* 267 */ \
OP(UnpremultiplyAndDitherCopyCHROMIUM) /* 268 */ \ OP(RasterCHROMIUM) /* 268 */ \
OP(BeginRasterCHROMIUMImmediate) /* 269 */ \ OP(EndRasterCHROMIUM) /* 269 */ \
OP(RasterCHROMIUM) /* 270 */ \ OP(CreateTransferCacheEntryINTERNAL) /* 270 */ \
OP(EndRasterCHROMIUM) /* 271 */ \ OP(DeleteTransferCacheEntryINTERNAL) /* 271 */ \
OP(CreateTransferCacheEntryINTERNAL) /* 272 */ \ OP(UnlockTransferCacheEntryINTERNAL) /* 272 */ \
OP(DeleteTransferCacheEntryINTERNAL) /* 273 */ \ OP(DeletePaintCacheTextBlobsINTERNALImmediate) /* 273 */ \
OP(UnlockTransferCacheEntryINTERNAL) /* 274 */ \ OP(DeletePaintCachePathsINTERNALImmediate) /* 274 */ \
OP(DeletePaintCacheTextBlobsINTERNALImmediate) /* 275 */ \ OP(ClearPaintCacheINTERNAL) /* 275 */ \
OP(DeletePaintCachePathsINTERNALImmediate) /* 276 */ \ OP(CreateAndConsumeTextureINTERNALImmediate) /* 276 */ \
OP(ClearPaintCacheINTERNAL) /* 277 */ \ OP(CopySubTexture) /* 277 */ \
OP(CreateTexture) /* 278 */ \ OP(TraceBeginCHROMIUM) /* 278 */ \
OP(SetColorSpaceMetadata) /* 279 */ \ OP(TraceEndCHROMIUM) /* 279 */ \
OP(ProduceTextureDirectImmediate) /* 280 */ \ OP(SetActiveURLCHROMIUM) /* 280 */
OP(CreateAndConsumeTextureINTERNALImmediate) /* 281 */ \
OP(TexParameteri) /* 282 */ \
OP(BindTexImage2DCHROMIUM) /* 283 */ \
OP(ReleaseTexImage2DCHROMIUM) /* 284 */ \
OP(TexStorage2D) /* 285 */ \
OP(CopySubTexture) /* 286 */ \
OP(TraceBeginCHROMIUM) /* 287 */ \
OP(TraceEndCHROMIUM) /* 288 */ \
OP(SetActiveURLCHROMIUM) /* 289 */
enum CommandId { enum CommandId {
kOneBeforeStartPoint = kOneBeforeStartPoint =
......
...@@ -8,7 +8,6 @@ GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizeiNotNegative n, cons ...@@ -8,7 +8,6 @@ GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizeiNotNegative n, cons
GL_APICALL void GL_APIENTRY glFinish (void); GL_APICALL void GL_APIENTRY glFinish (void);
GL_APICALL void GL_APIENTRY glFlush (void); GL_APICALL void GL_APIENTRY glFlush (void);
GL_APICALL GLenum GL_APIENTRY glGetError (void); GL_APICALL GLenum GL_APIENTRY glGetError (void);
GL_APICALL void GL_APIENTRY glGetIntegerv (GLenumGLState pname, GLint* params);
GL_APICALL void GL_APIENTRY glShallowFlushCHROMIUM (void); GL_APICALL void GL_APIENTRY glShallowFlushCHROMIUM (void);
GL_APICALL void GL_APIENTRY glOrderingBarrierCHROMIUM (void); GL_APICALL void GL_APIENTRY glOrderingBarrierCHROMIUM (void);
GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizeiNotNegative n, GLuint* queries); GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizeiNotNegative n, GLuint* queries);
...@@ -18,15 +17,12 @@ GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenumQueryTarget target); ...@@ -18,15 +17,12 @@ GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenumQueryTarget target);
GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLidQuery id, GLenumQueryObjectParameter pname, GLuint* params); GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLidQuery id, GLenumQueryObjectParameter pname, GLuint* params);
// Non-GL commands. // Non-GL commands.
GL_APICALL GLuint GL_APIENTRY glCreateImageCHROMIUM (ClientBuffer buffer, GLsizei width, GLsizei height, GLenum internalformat);
GL_APICALL void GL_APIENTRY glDestroyImageCHROMIUM (GLuint image_id);
GL_APICALL void GL_APIENTRY glLoseContextCHROMIUM (GLenumResetStatus current, GLenumResetStatus other); GL_APICALL void GL_APIENTRY glLoseContextCHROMIUM (GLenumResetStatus current, GLenumResetStatus other);
GL_APICALL GLuint64 GL_APIENTRY glInsertFenceSyncCHROMIUM (void); GL_APICALL GLuint64 GL_APIENTRY glInsertFenceSyncCHROMIUM (void);
GL_APICALL void GL_APIENTRY glGenSyncTokenCHROMIUM (GLbyte* sync_token); GL_APICALL void GL_APIENTRY glGenSyncTokenCHROMIUM (GLbyte* sync_token);
GL_APICALL void GL_APIENTRY glGenUnverifiedSyncTokenCHROMIUM (GLbyte* sync_token); GL_APICALL void GL_APIENTRY glGenUnverifiedSyncTokenCHROMIUM (GLbyte* sync_token);
GL_APICALL void GL_APIENTRY glVerifySyncTokensCHROMIUM (GLbyte** sync_tokens, GLsizei count); GL_APICALL void GL_APIENTRY glVerifySyncTokensCHROMIUM (GLbyte** sync_tokens, GLsizei count);
GL_APICALL void GL_APIENTRY glWaitSyncTokenCHROMIUM (const GLbyte* sync_token); GL_APICALL void GL_APIENTRY glWaitSyncTokenCHROMIUM (const GLbyte* sync_token);
GL_APICALL void GL_APIENTRY glUnpremultiplyAndDitherCopyCHROMIUM (GLuint source_id, GLuint dest_id, GLint x, GLint y, GLsizei width, GLsizei height);
// Extension KHR_robustness // Extension KHR_robustness
GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void);
...@@ -43,15 +39,8 @@ GL_APICALL void GL_APIENTRY glDeletePaintCachePathsINTERNAL (GLsizeiNotN ...@@ -43,15 +39,8 @@ GL_APICALL void GL_APIENTRY glDeletePaintCachePathsINTERNAL (GLsizeiNotN
GL_APICALL void GL_APIENTRY glClearPaintCacheINTERNAL (void); GL_APICALL void GL_APIENTRY glClearPaintCacheINTERNAL (void);
// TOOD(backer): Remove GL encoding. These are not GL functions. // TOOD(backer): Remove GL encoding. These are not GL functions.
GL_APICALL GLuint GL_APIENTRY glCreateTexture (bool use_buffer, EnumClassgfx::BufferUsage buffer_usage, EnumClassviz::ResourceFormat format);
GL_APICALL void GL_APIENTRY glSetColorSpaceMetadata (GLuint texture_id, GLColorSpace color_space);
GL_APICALL void GL_APIENTRY glProduceTextureDirect (GLuint texture, GLbyte* mailbox);
GL_APICALL GLuint GL_APIENTRY glCreateAndConsumeTexture (bool use_buffer, EnumClassgfx::BufferUsage buffer_usage, EnumClassviz::ResourceFormat format, const GLbyte* mailbox); GL_APICALL GLuint GL_APIENTRY glCreateAndConsumeTexture (bool use_buffer, EnumClassgfx::BufferUsage buffer_usage, EnumClassviz::ResourceFormat format, const GLbyte* mailbox);
GL_APICALL GLuint GL_APIENTRY glCreateAndConsumeTextureINTERNAL (GLuint texture_id, bool use_buffer, EnumClassgfx::BufferUsage buffer_usage, EnumClassviz::ResourceFormat format, const GLbyte* mailbox); GL_APICALL GLuint GL_APIENTRY glCreateAndConsumeTextureINTERNAL (GLuint texture_id, bool use_buffer, EnumClassgfx::BufferUsage buffer_usage, EnumClassviz::ResourceFormat format, const GLbyte* mailbox);
GL_APICALL void GL_APIENTRY glTexParameteri (GLuint texture_id, GLenumTextureParameter pname, GLint param);
GL_APICALL void GL_APIENTRY glBindTexImage2DCHROMIUM (GLuint texture_id, GLint image_id);
GL_APICALL void GL_APIENTRY glReleaseTexImage2DCHROMIUM (GLuint texture_id, GLint image_id);
GL_APICALL void GL_APIENTRY glTexStorage2D (GLuint texture_id, GLsizei width, GLsizei height);
GL_APICALL void GL_APIENTRY glCopySubTexture (GLuint source_id, GLuint dest_id, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GL_APICALL void GL_APIENTRY glCopySubTexture (GLuint source_id, GLuint dest_id, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
GL_APICALL void GL_APIENTRY glTraceBeginCHROMIUM (const char* category_name, const char* trace_name); GL_APICALL void GL_APIENTRY glTraceBeginCHROMIUM (const char* category_name, const char* trace_name);
GL_APICALL void GL_APIENTRY glTraceEndCHROMIUM (void); GL_APICALL void GL_APIENTRY glTraceEndCHROMIUM (void);
......
...@@ -82,6 +82,7 @@ class GPU_GLES2_EXPORT RasterDecoder : public DecoderContext, ...@@ -82,6 +82,7 @@ class GPU_GLES2_EXPORT RasterDecoder : public DecoderContext,
virtual ServiceTransferCache* GetTransferCacheForTest() = 0; virtual ServiceTransferCache* GetTransferCacheForTest() = 0;
virtual void SetUpForRasterCHROMIUMForTest() = 0; virtual void SetUpForRasterCHROMIUMForTest() = 0;
virtual void SetOOMErrorForTest() = 0;
protected: protected:
RasterDecoder(CommandBufferServiceBase* command_buffer_service, RasterDecoder(CommandBufferServiceBase* command_buffer_service,
......
...@@ -59,45 +59,6 @@ error::Error RasterDecoderImpl::HandleGetError(uint32_t immediate_data_size, ...@@ -59,45 +59,6 @@ error::Error RasterDecoderImpl::HandleGetError(uint32_t immediate_data_size,
return error::kNoError; return error::kNoError;
} }
error::Error RasterDecoderImpl::HandleGetIntegerv(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::GetIntegerv& c =
*static_cast<const volatile raster::cmds::GetIntegerv*>(cmd_data);
GLenum pname = static_cast<GLenum>(c.pname);
typedef cmds::GetIntegerv::Result Result;
GLsizei num_values = 0;
if (!GetNumValuesReturnedForGLGet(pname, &num_values)) {
LOCAL_SET_GL_ERROR_INVALID_ENUM(":GetIntegerv", pname, "pname");
return error::kNoError;
}
uint32_t checked_size = 0;
if (!Result::ComputeSize(num_values).AssignIfValid(&checked_size)) {
return error::kOutOfBounds;
}
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, checked_size);
GLint* params = result ? result->GetData() : nullptr;
if (!validators_->g_l_state.IsValid(pname)) {
LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetIntegerv", pname, "pname");
return error::kNoError;
}
if (params == nullptr) {
return error::kOutOfBounds;
}
LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetIntegerv");
// Check that the client initialized the result.
if (result->size != 0) {
return error::kInvalidArguments;
}
DoGetIntegerv(pname, params, num_values);
GLenum error = LOCAL_PEEK_GL_ERROR("GetIntegerv");
if (error == GL_NO_ERROR) {
result->SetNumResults(num_values);
}
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleGenQueriesEXTImmediate( error::Error RasterDecoderImpl::HandleGenQueriesEXTImmediate(
uint32_t immediate_data_size, uint32_t immediate_data_size,
const volatile void* cmd_data) { const volatile void* cmd_data) {
...@@ -165,33 +126,6 @@ error::Error RasterDecoderImpl::HandleLoseContextCHROMIUM( ...@@ -165,33 +126,6 @@ error::Error RasterDecoderImpl::HandleLoseContextCHROMIUM(
return error::kNoError; return error::kNoError;
} }
error::Error RasterDecoderImpl::HandleUnpremultiplyAndDitherCopyCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::UnpremultiplyAndDitherCopyCHROMIUM& c =
*static_cast<
const volatile raster::cmds::UnpremultiplyAndDitherCopyCHROMIUM*>(
cmd_data);
GLuint source_id = static_cast<GLuint>(c.source_id);
GLuint dest_id = static_cast<GLuint>(c.dest_id);
GLint x = static_cast<GLint>(c.x);
GLint y = static_cast<GLint>(c.y);
GLsizei width = static_cast<GLsizei>(c.width);
GLsizei height = static_cast<GLsizei>(c.height);
if (width < 0) {
LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glUnpremultiplyAndDitherCopyCHROMIUM",
"width < 0");
return error::kNoError;
}
if (height < 0) {
LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glUnpremultiplyAndDitherCopyCHROMIUM",
"height < 0");
return error::kNoError;
}
DoUnpremultiplyAndDitherCopyCHROMIUM(source_id, dest_id, x, y, width, height);
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleBeginRasterCHROMIUMImmediate( error::Error RasterDecoderImpl::HandleBeginRasterCHROMIUMImmediate(
uint32_t immediate_data_size, uint32_t immediate_data_size,
const volatile void* cmd_data) { const volatile void* cmd_data) {
...@@ -356,57 +290,6 @@ error::Error RasterDecoderImpl::HandleClearPaintCacheINTERNAL( ...@@ -356,57 +290,6 @@ error::Error RasterDecoderImpl::HandleClearPaintCacheINTERNAL(
return error::kNoError; return error::kNoError;
} }
error::Error RasterDecoderImpl::HandleCreateTexture(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::CreateTexture& c =
*static_cast<const volatile raster::cmds::CreateTexture*>(cmd_data);
bool use_buffer = static_cast<bool>(c.use_buffer);
gfx::BufferUsage buffer_usage = static_cast<gfx::BufferUsage>(c.buffer_usage);
viz::ResourceFormat format = static_cast<viz::ResourceFormat>(c.format);
if (!validators_->gfx_buffer_usage.IsValid(buffer_usage)) {
LOCAL_SET_GL_ERROR_INVALID_ENUM("glCreateTexture", buffer_usage,
"buffer_usage");
return error::kNoError;
}
if (!validators_->viz_resource_format.IsValid(format)) {
LOCAL_SET_GL_ERROR_INVALID_ENUM("glCreateTexture", format, "format");
return error::kNoError;
}
uint32_t client_id = c.client_id;
if (GetTexture(client_id)) {
return error::kInvalidArguments;
}
GLuint service_id = DoCreateTexture(use_buffer, buffer_usage, format);
if (service_id) {
CreateTexture(client_id, service_id, use_buffer, buffer_usage, format);
}
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleProduceTextureDirectImmediate(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::ProduceTextureDirectImmediate& c =
*static_cast<const volatile raster::cmds::ProduceTextureDirectImmediate*>(
cmd_data);
GLuint texture = static_cast<GLuint>(c.texture);
uint32_t mailbox_size;
if (!gles2::GLES2Util::ComputeDataSize<GLbyte, 16>(1, &mailbox_size)) {
return error::kOutOfBounds;
}
if (mailbox_size > immediate_data_size) {
return error::kOutOfBounds;
}
volatile GLbyte* mailbox = gles2::GetImmediateDataAs<volatile GLbyte*>(
c, mailbox_size, immediate_data_size);
if (mailbox == nullptr) {
return error::kOutOfBounds;
}
DoProduceTextureDirect(texture, mailbox);
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleCreateAndConsumeTextureINTERNALImmediate( error::Error RasterDecoderImpl::HandleCreateAndConsumeTextureINTERNALImmediate(
uint32_t immediate_data_size, uint32_t immediate_data_size,
const volatile void* cmd_data) { const volatile void* cmd_data) {
...@@ -445,66 +328,6 @@ error::Error RasterDecoderImpl::HandleCreateAndConsumeTextureINTERNALImmediate( ...@@ -445,66 +328,6 @@ error::Error RasterDecoderImpl::HandleCreateAndConsumeTextureINTERNALImmediate(
return error::kNoError; return error::kNoError;
} }
error::Error RasterDecoderImpl::HandleTexParameteri(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::TexParameteri& c =
*static_cast<const volatile raster::cmds::TexParameteri*>(cmd_data);
GLuint texture_id = static_cast<GLuint>(c.texture_id);
GLenum pname = static_cast<GLenum>(c.pname);
GLint param = static_cast<GLint>(c.param);
if (!validators_->texture_parameter.IsValid(pname)) {
LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameteri", pname, "pname");
return error::kNoError;
}
DoTexParameteri(texture_id, pname, param);
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleBindTexImage2DCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::BindTexImage2DCHROMIUM& c =
*static_cast<const volatile raster::cmds::BindTexImage2DCHROMIUM*>(
cmd_data);
GLuint texture_id = static_cast<GLuint>(c.texture_id);
GLint image_id = static_cast<GLint>(c.image_id);
DoBindTexImage2DCHROMIUM(texture_id, image_id);
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleReleaseTexImage2DCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::ReleaseTexImage2DCHROMIUM& c =
*static_cast<const volatile raster::cmds::ReleaseTexImage2DCHROMIUM*>(
cmd_data);
GLuint texture_id = static_cast<GLuint>(c.texture_id);
GLint image_id = static_cast<GLint>(c.image_id);
DoReleaseTexImage2DCHROMIUM(texture_id, image_id);
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleTexStorage2D(
uint32_t immediate_data_size,
const volatile void* cmd_data) {
const volatile raster::cmds::TexStorage2D& c =
*static_cast<const volatile raster::cmds::TexStorage2D*>(cmd_data);
GLuint texture_id = static_cast<GLuint>(c.texture_id);
GLsizei width = static_cast<GLsizei>(c.width);
GLsizei height = static_cast<GLsizei>(c.height);
if (width < 0) {
LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage2D", "width < 0");
return error::kNoError;
}
if (height < 0) {
LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage2D", "height < 0");
return error::kNoError;
}
DoTexStorage2D(texture_id, width, height);
return error::kNoError;
}
error::Error RasterDecoderImpl::HandleCopySubTexture( error::Error RasterDecoderImpl::HandleCopySubTexture(
uint32_t immediate_data_size, uint32_t immediate_data_size,
const volatile void* cmd_data) { const volatile void* cmd_data) {
......
...@@ -99,6 +99,7 @@ class MockRasterDecoder : public RasterDecoder { ...@@ -99,6 +99,7 @@ class MockRasterDecoder : public RasterDecoder {
MOCK_METHOD0(GetTransferCacheForTest, ServiceTransferCache*()); MOCK_METHOD0(GetTransferCacheForTest, ServiceTransferCache*());
MOCK_METHOD0(DecoderIdForTest, int()); MOCK_METHOD0(DecoderIdForTest, int());
MOCK_METHOD0(SetUpForRasterCHROMIUMForTest, void()); MOCK_METHOD0(SetUpForRasterCHROMIUMForTest, void());
MOCK_METHOD0(SetOOMErrorForTest, void());
MOCK_METHOD4(DoCommands, MOCK_METHOD4(DoCommands,
error::Error(unsigned int num_commands, error::Error(unsigned int num_commands,
const volatile void* buffer, const volatile void* buffer,
......
...@@ -69,56 +69,4 @@ TEST_P(RasterDecoderTest1, GetErrorInvalidArgsBadSharedMemoryId) { ...@@ -69,56 +69,4 @@ TEST_P(RasterDecoderTest1, GetErrorInvalidArgsBadSharedMemoryId) {
cmd.Init(shared_memory_id_, kInvalidSharedMemoryOffset); cmd.Init(shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
} }
TEST_P(RasterDecoderTest1, GetIntegervValidArgs) {
EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR));
SpecializedSetup<cmds::GetIntegerv, 0>(true);
typedef cmds::GetIntegerv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, result->GetData()));
result->size = 0;
cmds::GetIntegerv cmd;
cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ACTIVE_TEXTURE),
result->GetNumResults());
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_P(RasterDecoderTest1, GetIntegervInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
SpecializedSetup<cmds::GetIntegerv, 0>(false);
cmds::GetIntegerv::Result* result =
static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_);
result->size = 0;
cmds::GetIntegerv cmd;
cmd.Init(GL_FOG_HINT, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(0u, result->size);
EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_P(RasterDecoderTest1, GetIntegervInvalidArgs1_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
SpecializedSetup<cmds::GetIntegerv, 0>(false);
cmds::GetIntegerv::Result* result =
static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_);
result->size = 0;
cmds::GetIntegerv cmd;
cmd.Init(GL_ACTIVE_TEXTURE, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
EXPECT_EQ(0u, result->size);
}
TEST_P(RasterDecoderTest1, GetIntegervInvalidArgs1_1) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
SpecializedSetup<cmds::GetIntegerv, 0>(false);
cmds::GetIntegerv::Result* result =
static_cast<cmds::GetIntegerv::Result*>(shared_memory_address_);
result->size = 0;
cmds::GetIntegerv cmd;
cmd.Init(GL_ACTIVE_TEXTURE, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
EXPECT_EQ(0u, result->size);
}
#endif // GPU_COMMAND_BUFFER_SERVICE_RASTER_DECODER_UNITTEST_1_AUTOGEN_H_ #endif // GPU_COMMAND_BUFFER_SERVICE_RASTER_DECODER_UNITTEST_1_AUTOGEN_H_
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "base/command_line.h" #include "base/command_line.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h" #include "base/strings/string_split.h"
#include "components/viz/common/resources/resource_format_utils.h"
#include "gpu/command_buffer/common/gles2_cmd_utils.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h"
#include "gpu/command_buffer/common/raster_cmd_format.h" #include "gpu/command_buffer/common/raster_cmd_format.h"
#include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/context_group.h"
...@@ -144,6 +145,44 @@ void RasterDecoderTestBase::ExpectEnableDisable(GLenum cap, bool enable) { ...@@ -144,6 +145,44 @@ void RasterDecoderTestBase::ExpectEnableDisable(GLenum cap, bool enable) {
} }
} }
void RasterDecoderTestBase::CreateFakeTexture(
GLuint client_id,
GLuint service_id,
viz::ResourceFormat resource_format,
GLsizei width,
GLsizei height,
bool cleared) {
// Create texture and temporary ref.
const GLuint kTempClientId = 271828;
auto* temp_ref =
group_->texture_manager()->CreateTexture(kTempClientId, service_id);
group_->texture_manager()->SetTarget(temp_ref, GL_TEXTURE_2D);
group_->texture_manager()->SetLevelInfo(
temp_ref, GL_TEXTURE_2D, 0, viz::GLInternalFormat(resource_format),
/*width=*/width, /*height=*/height, 1, 0,
viz::GLDataFormat(resource_format), viz::GLDataType(resource_format),
cleared ? gfx::Rect(width, height) : gfx::Rect());
gpu::Mailbox mailbox = gpu::Mailbox::Generate();
group_->mailbox_manager()->ProduceTexture(mailbox, temp_ref->texture());
// Consume texture to hold a permanent ref.
cmds::CreateAndConsumeTextureINTERNALImmediate& cmd =
*GetImmediateAs<cmds::CreateAndConsumeTextureINTERNALImmediate>();
cmd.Init(client_id, false /* use_buffer */, gfx::BufferUsage::GPU_READ,
resource_format, mailbox.name);
EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(mailbox.name)));
// Check that client_texture_id has appropriate attributes.
auto* texture_ref = group().texture_manager()->GetTexture(client_id);
ASSERT_NE(texture_ref, nullptr);
auto* texture = texture_ref->texture();
EXPECT_EQ(service_id, texture->service_id());
// Release temporary ref.
group_->texture_manager()->RemoveTexture(kTempClientId);
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
void RasterDecoderTestBase::InitDecoder(const InitState& init) { void RasterDecoderTestBase::InitDecoder(const InitState& init) {
std::string all_extensions; std::string all_extensions;
for (const std::string& extension : init.extensions) { for (const std::string& extension : init.extensions) {
...@@ -254,15 +293,9 @@ void RasterDecoderTestBase::InitDecoder(const InitState& init) { ...@@ -254,15 +293,9 @@ void RasterDecoderTestBase::InitDecoder(const InitState& init) {
decoder_->MakeCurrent(); decoder_->MakeCurrent();
decoder_->BeginDecoding(); decoder_->BeginDecoding();
EXPECT_CALL(*gl_, GenTextures(_, _)) CreateFakeTexture(client_texture_id_, kServiceTextureId,
.WillOnce(SetArgPointee<1>(kServiceTextureId)) viz::ResourceFormat::RGBA_8888, /*width=*/2,
.RetiresOnSaturation(); /*height=*/2, /*cleared=*/false);
cmds::CreateTexture cmd;
cmd.Init(false /* use_buffer */, gfx::BufferUsage::GPU_READ,
viz::ResourceFormat::RGBA_8888, client_texture_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(GL_NO_ERROR, GetGLError());
} }
void RasterDecoderTestBase::ResetDecoder() { void RasterDecoderTestBase::ResetDecoder() {
...@@ -384,33 +417,6 @@ void RasterDecoderTestBase::SetScopedTextureBinderExpectations(GLenum target) { ...@@ -384,33 +417,6 @@ void RasterDecoderTestBase::SetScopedTextureBinderExpectations(GLenum target) {
EXPECT_CALL(*gl_, BindTexture(target, 0)).Times(1).RetiresOnSaturation(); EXPECT_CALL(*gl_, BindTexture(target, 0)).Times(1).RetiresOnSaturation();
} }
void RasterDecoderTestBase::DoTexStorage2D(GLuint client_id,
GLsizei width,
GLsizei height) {
cmds::TexStorage2D tex_storage_cmd;
tex_storage_cmd.Init(client_id, width, height);
SetScopedTextureBinderExpectations(GL_TEXTURE_2D);
if (decoder_->GetCapabilities().texture_storage) {
EXPECT_CALL(*gl_,
TexStorage2DEXT(GL_TEXTURE_2D, /*levels=*/1, _, width, height))
.Times(1)
.RetiresOnSaturation();
} else {
EXPECT_CALL(*gl_, GetError())
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
EXPECT_CALL(*gl_,
TexImage2D(GL_TEXTURE_2D, _, _, width, height, _, _, _, _))
.Times(1)
.RetiresOnSaturation();
}
EXPECT_EQ(error::kNoError, ExecuteCmd(tex_storage_cmd));
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
void RasterDecoderTestBase::SetupClearTextureExpectations( void RasterDecoderTestBase::SetupClearTextureExpectations(
GLuint service_id, GLuint service_id,
GLuint old_service_id, GLuint old_service_id,
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <vector> #include <vector>
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "components/viz/common/resources/resource_format.h"
#include "gpu/command_buffer/client/client_test_helper.h" #include "gpu/command_buffer/client/client_test_helper.h"
#include "gpu/command_buffer/common/gles2_cmd_utils.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h"
#include "gpu/command_buffer/common/raster_cmd_format.h" #include "gpu/command_buffer/common/raster_cmd_format.h"
...@@ -180,7 +181,12 @@ class RasterDecoderTestBase : public ::testing::TestWithParam<bool>, ...@@ -180,7 +181,12 @@ class RasterDecoderTestBase : public ::testing::TestWithParam<bool>,
void SetupInitStateManualExpectationsForDoLineWidth(GLfloat width); void SetupInitStateManualExpectationsForDoLineWidth(GLfloat width);
void ExpectEnableDisable(GLenum cap, bool enable); void ExpectEnableDisable(GLenum cap, bool enable);
void SetupTexture(); void CreateFakeTexture(GLuint client_id,
GLuint service_id,
viz::ResourceFormat resource_format,
GLsizei width,
GLsizei height,
bool cleared);
// Note that the error is returned as GLint instead of GLenum. // Note that the error is returned as GLint instead of GLenum.
// This is because there is a mismatch in the types of GLenum and // This is because there is a mismatch in the types of GLenum and
...@@ -193,9 +199,6 @@ class RasterDecoderTestBase : public ::testing::TestWithParam<bool>, ...@@ -193,9 +199,6 @@ class RasterDecoderTestBase : public ::testing::TestWithParam<bool>,
void DoBindTexture(GLenum target, GLuint client_id, GLuint service_id); void DoBindTexture(GLenum target, GLuint client_id, GLuint service_id);
void DoDeleteTexture(GLuint client_id, GLuint service_id); void DoDeleteTexture(GLuint client_id, GLuint service_id);
void SetScopedTextureBinderExpectations(GLenum target); void SetScopedTextureBinderExpectations(GLenum target);
void DoTexStorage2D(GLuint client_id,
GLsizei width,
GLsizei height);
void SetupClearTextureExpectations(GLuint service_id, void SetupClearTextureExpectations(GLuint service_id,
GLuint old_service_id, GLuint old_service_id,
......
...@@ -25,7 +25,6 @@ class RasterDecoderOOMTest : public RasterDecoderManualInitTest { ...@@ -25,7 +25,6 @@ class RasterDecoderOOMTest : public RasterDecoderManualInitTest {
void Init(bool has_robustness) { void Init(bool has_robustness) {
InitState init; InitState init;
init.lose_context_when_out_of_memory = true; init.lose_context_when_out_of_memory = true;
init.workarounds.simulate_out_of_memory_on_large_textures = true;
if (has_robustness) { if (has_robustness) {
init.extensions.push_back("GL_ARB_robustness"); init.extensions.push_back("GL_ARB_robustness");
} }
...@@ -43,11 +42,18 @@ class RasterDecoderOOMTest : public RasterDecoderManualInitTest { ...@@ -43,11 +42,18 @@ class RasterDecoderOOMTest : public RasterDecoderManualInitTest {
.Times(1) .Times(1)
.RetiresOnSaturation(); .RetiresOnSaturation();
// Trigger OOM with simulate_out_of_memory_on_large_textures // glGetError merges driver error state with decoder error state. Return
cmds::TexStorage2D cmd; // GL_NO_ERROR from mock driver and GL_OUT_OF_MEMORY from decoder.
cmd.Init(client_texture_id_, /*width=*/50000, EXPECT_CALL(*gl_, GetError())
/*height=*/50000); .WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
GetDecoder()->SetOOMErrorForTest();
cmds::GetError cmd;
cmd.Init(shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kLostContext, ExecuteCmd(cmd)); EXPECT_EQ(error::kLostContext, ExecuteCmd(cmd));
EXPECT_EQ(GL_OUT_OF_MEMORY,
static_cast<GLint>(*GetSharedMemoryAs<GLenum*>()));
} }
}; };
...@@ -57,7 +63,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonOOM) { ...@@ -57,7 +63,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonOOM) {
const error::ContextLostReason expected_reason_for_other_contexts = const error::ContextLostReason expected_reason_for_other_contexts =
error::kOutOfMemory; error::kOutOfMemory;
OOM(GL_NO_ERROR, expected_reason_for_other_contexts); OOM(GL_NO_ERROR, expected_reason_for_other_contexts);
EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
EXPECT_TRUE(decoder_->WasContextLost()); EXPECT_TRUE(decoder_->WasContextLost());
EXPECT_EQ(error::kOutOfMemory, GetContextLostReason()); EXPECT_EQ(error::kOutOfMemory, GetContextLostReason());
} }
...@@ -68,7 +73,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonWhenStatusIsNoError) { ...@@ -68,7 +73,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonWhenStatusIsNoError) {
const error::ContextLostReason expected_reason_for_other_contexts = const error::ContextLostReason expected_reason_for_other_contexts =
error::kOutOfMemory; error::kOutOfMemory;
OOM(GL_NO_ERROR, expected_reason_for_other_contexts); OOM(GL_NO_ERROR, expected_reason_for_other_contexts);
EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
EXPECT_TRUE(decoder_->WasContextLost()); EXPECT_TRUE(decoder_->WasContextLost());
EXPECT_EQ(error::kOutOfMemory, GetContextLostReason()); EXPECT_EQ(error::kOutOfMemory, GetContextLostReason());
} }
...@@ -79,7 +83,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonWhenStatusIsGuilty) { ...@@ -79,7 +83,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonWhenStatusIsGuilty) {
const error::ContextLostReason expected_reason_for_other_contexts = const error::ContextLostReason expected_reason_for_other_contexts =
error::kUnknown; error::kUnknown;
OOM(GL_GUILTY_CONTEXT_RESET_ARB, expected_reason_for_other_contexts); OOM(GL_GUILTY_CONTEXT_RESET_ARB, expected_reason_for_other_contexts);
EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
EXPECT_TRUE(decoder_->WasContextLost()); EXPECT_TRUE(decoder_->WasContextLost());
EXPECT_EQ(error::kGuilty, GetContextLostReason()); EXPECT_EQ(error::kGuilty, GetContextLostReason());
} }
...@@ -90,7 +93,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonWhenStatusIsUnknown) { ...@@ -90,7 +93,6 @@ TEST_P(RasterDecoderOOMTest, ContextLostReasonWhenStatusIsUnknown) {
const error::ContextLostReason expected_reason_for_other_contexts = const error::ContextLostReason expected_reason_for_other_contexts =
error::kUnknown; error::kUnknown;
OOM(GL_UNKNOWN_CONTEXT_RESET_ARB, expected_reason_for_other_contexts); OOM(GL_UNKNOWN_CONTEXT_RESET_ARB, expected_reason_for_other_contexts);
EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
EXPECT_TRUE(decoder_->WasContextLost()); EXPECT_TRUE(decoder_->WasContextLost());
EXPECT_EQ(error::kUnknown, GetContextLostReason()); EXPECT_EQ(error::kUnknown, GetContextLostReason());
} }
...@@ -173,11 +175,12 @@ TEST_P(RasterDecoderLostContextTest, LostFromMakeCurrentWithRobustness) { ...@@ -173,11 +175,12 @@ TEST_P(RasterDecoderLostContextTest, LostFromMakeCurrentWithRobustness) {
TEST_P(RasterDecoderLostContextTest, TextureDestroyAfterLostFromMakeCurrent) { TEST_P(RasterDecoderLostContextTest, TextureDestroyAfterLostFromMakeCurrent) {
Init(/*has_robustness=*/true); Init(/*has_robustness=*/true);
// Create the texture. CreateFakeTexture(kNewClientId, kNewServiceId, viz::ResourceFormat::RGBA_8888,
DoTexStorage2D(client_texture_id_, /*width=*/10, /*height=*/10); /*width=*/2, /*height=*/2,
/*cleared=*/false);
// The texture should never be deleted at the GL level. // The texture should never be deleted at the GL level.
EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(kServiceTextureId))) EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(kNewServiceId)))
.Times(0) .Times(0)
.RetiresOnSaturation(); .RetiresOnSaturation();
......
...@@ -24,8 +24,6 @@ namespace gpu { ...@@ -24,8 +24,6 @@ namespace gpu {
namespace { namespace {
constexpr gfx::BufferFormat kBufferFormat = gfx::BufferFormat::RGBA_8888;
constexpr gfx::BufferUsage kBufferUsage = gfx::BufferUsage::SCANOUT;
constexpr viz::ResourceFormat kResourceFormat = viz::RGBA_8888; constexpr viz::ResourceFormat kResourceFormat = viz::RGBA_8888;
constexpr gfx::Size kBufferSize(100, 100); constexpr gfx::Size kBufferSize(100, 100);
...@@ -88,99 +86,6 @@ class RasterInProcessCommandBufferTest : public ::testing::Test { ...@@ -88,99 +86,6 @@ class RasterInProcessCommandBufferTest : public ::testing::Test {
} // namespace } // namespace
TEST_F(RasterInProcessCommandBufferTest, CreateImage) {
if (!RasterInProcessContext::SupportedInTest())
return;
// Calling CreateImageCHROMIUM() should allocate an image id.
std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer1 =
gpu_memory_buffer_manager_->CreateGpuMemoryBuffer(
kBufferSize, kBufferFormat, kBufferUsage, kNullSurfaceHandle);
GLuint image_id1 = ri_->CreateImageCHROMIUM(
gpu_memory_buffer1->AsClientBuffer(), kBufferSize.width(),
kBufferSize.height(), GL_RGBA);
EXPECT_GT(image_id1, 0u);
// Create a second GLInProcessContext that is backed by a different
// InProcessCommandBuffer. Calling CreateImageCHROMIUM() should return a
// different id than the first call.
std::unique_ptr<RasterInProcessContext> context2 =
CreateRasterInProcessContext();
std::unique_ptr<gfx::GpuMemoryBuffer> buffer2 =
gpu_memory_buffer_manager_->CreateGpuMemoryBuffer(
kBufferSize, kBufferFormat, kBufferUsage, kNullSurfaceHandle);
GLuint image_id2 = context2->GetImplementation()->CreateImageCHROMIUM(
buffer2->AsClientBuffer(), kBufferSize.width(), kBufferSize.height(),
GL_RGBA);
EXPECT_GT(image_id2, 0u);
EXPECT_NE(image_id1, image_id2);
}
TEST_F(RasterInProcessCommandBufferTest, SetColorSpaceMetadata) {
if (!RasterInProcessContext::SupportedInTest())
return;
GLuint texture_id =
ri_->CreateTexture(/*use_buffer=*/true, kBufferUsage, kResourceFormat);
std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer1 =
gpu_memory_buffer_manager_->CreateGpuMemoryBuffer(
kBufferSize, kBufferFormat, kBufferUsage, kNullSurfaceHandle);
GLuint image_id = ri_->CreateImageCHROMIUM(
gpu_memory_buffer1->AsClientBuffer(), kBufferSize.width(),
kBufferSize.height(), GL_RGBA);
ri_->BindTexImage2DCHROMIUM(texture_id, image_id);
EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), ri_->GetError());
gfx::ColorSpace color_space;
ri_->SetColorSpaceMetadata(texture_id,
reinterpret_cast<GLColorSpace>(&color_space));
EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), ri_->GetError());
}
TEST_F(RasterInProcessCommandBufferTest, TexStorage2DImage) {
if (!RasterInProcessContext::SupportedInTest())
return;
// Check for GPU and driver support
if (!context_->GetCapabilities().texture_storage_image) {
return;
}
std::vector<gfx::BufferUsageAndFormat> supported_formats =
CreateBufferUsageAndFormatExceptionList();
if (supported_formats.empty()) {
return;
}
// Find a supported_format with a matching resource_format.
bool found = false;
gfx::BufferUsageAndFormat supported_format = supported_formats[0];
viz::ResourceFormat resource_format = static_cast<viz::ResourceFormat>(0);
for (size_t i = 0; !found && i < supported_formats.size(); ++i) {
supported_format = supported_formats[i];
for (size_t j = 0; !found && j <= viz::RESOURCE_FORMAT_MAX; ++j) {
resource_format = static_cast<viz::ResourceFormat>(j);
if (supported_format.format == viz::BufferFormat(resource_format)) {
found = true;
}
}
}
if (!found) {
return;
}
// Create a buffer backed texture and allocate storage.
GLuint texture_id = ri_->CreateTexture(
/*use_buffer=*/true, supported_format.usage, resource_format);
ri_->TexStorage2D(texture_id, kBufferSize.width(), kBufferSize.height());
EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), ri_->GetError());
}
TEST_F(RasterInProcessCommandBufferTest, TEST_F(RasterInProcessCommandBufferTest,
WhitelistBetweenBeginEndRasterCHROMIUM) { WhitelistBetweenBeginEndRasterCHROMIUM) {
if (!RasterInProcessContext::SupportedInTest()) if (!RasterInProcessContext::SupportedInTest())
...@@ -211,7 +116,8 @@ TEST_F(RasterInProcessCommandBufferTest, ...@@ -211,7 +116,8 @@ TEST_F(RasterInProcessCommandBufferTest,
// Should flag an error this command is not allowed between a Begin and // Should flag an error this command is not allowed between a Begin and
// EndRasterCHROMIUM. // EndRasterCHROMIUM.
ri_->CreateTexture(/*use_buffer=*/false, kBufferUsage, kResourceFormat); SyncToken sync_token;
ri_->GenSyncTokenCHROMIUM(sync_token.GetData());
EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), ri_->GetError()); EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), ri_->GetError());
// Confirm that we skip over without error. // Confirm that we skip over without error.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment