#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
#include <limits.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <limits>
#include <list>
#include <map>
#include <memory>
#include <optional>
#include <set>
#include <string_view>
#include <unordered_map>
#include <utility>
#include "base/containers/contains.h"
#include "base/containers/flat_set.h"
#include "base/containers/heap_array.h"
#include "base/containers/queue.h"
#include "base/containers/span.h"
#include "base/debug/alias.h"
#include "base/debug/dump_without_crashing.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/hash/legacy_hash.h"
#include "base/logging.h"
#include "base/memory/raw_ptr.h"
#include "base/metrics/histogram_macros.h"
#include "base/numerics/safe_math.h"
#include "base/ranges/algorithm.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "gpu/command_buffer/common/debug_marker_manager.h"
#include "gpu/command_buffer/common/gles2_cmd_copy_texture_chromium_utils.h"
#include "gpu/command_buffer/common/gles2_cmd_format.h"
#include "gpu/command_buffer/common/gles2_cmd_utils.h"
#include "gpu/command_buffer/common/mailbox.h"
#include "gpu/command_buffer/common/sync_token.h"
#include "gpu/command_buffer/service/buffer_manager.h"
#include "gpu/command_buffer/service/command_buffer_service.h"
#include "gpu/command_buffer/service/context_group.h"
#include "gpu/command_buffer/service/context_state.h"
#include "gpu/command_buffer/service/decoder_client.h"
#include "gpu/command_buffer/service/error_state.h"
#include "gpu/command_buffer/service/feature_info.h"
#include "gpu/command_buffer/service/framebuffer_manager.h"
#include "gpu/command_buffer/service/gl_utils.h"
#include "gpu/command_buffer/service/gles2_cmd_clear_framebuffer.h"
#include "gpu/command_buffer/service/gles2_cmd_copy_tex_image.h"
#include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h"
#include "gpu/command_buffer/service/gles2_cmd_validation.h"
#include "gpu/command_buffer/service/gles2_external_framebuffer.h"
#include "gpu/command_buffer/service/gles2_query_manager.h"
#include "gpu/command_buffer/service/gpu_fence_manager.h"
#include "gpu/command_buffer/service/gpu_state_tracer.h"
#include "gpu/command_buffer/service/gpu_tracer.h"
#include "gpu/command_buffer/service/logger.h"
#include "gpu/command_buffer/service/memory_tracking.h"
#include "gpu/command_buffer/service/multi_draw_manager.h"
#include "gpu/command_buffer/service/program_manager.h"
#include "gpu/command_buffer/service/renderbuffer_manager.h"
#include "gpu/command_buffer/service/sampler_manager.h"
#include "gpu/command_buffer/service/service_discardable_manager.h"
#include "gpu/command_buffer/service/shader_manager.h"
#include "gpu/command_buffer/service/shader_translator.h"
#include "gpu/command_buffer/service/shared_image/shared_image_factory.h"
#include "gpu/command_buffer/service/shared_image/shared_image_representation.h"
#include "gpu/command_buffer/service/texture_manager.h"
#include "gpu/command_buffer/service/transform_feedback_manager.h"
#include "gpu/command_buffer/service/vertex_array_manager.h"
#include "gpu/command_buffer/service/vertex_attrib_manager.h"
#include "gpu/config/gpu_finch_features.h"
#include "gpu/config/gpu_preferences.h"
#include "ui/gfx/buffer_types.h"
#include "ui/gfx/color_space.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/geometry/rect_f.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/geometry/transform.h"
#include "ui/gfx/gpu_fence.h"
#include "ui/gfx/gpu_memory_buffer.h"
#include "ui/gfx/overlay_plane_data.h"
#include "ui/gfx/overlay_priority_hint.h"
#include "ui/gfx/video_types.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_enums.h"
#include "ui/gl/gl_fence.h"
#include "ui/gl/gl_gl_api_implementation.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/gl_surface.h"
#include "ui/gl/gl_version_info.h"
#include "ui/gl/gpu_preference.h"
#include "ui/gl/gpu_switching_manager.h"
#include "ui/gl/gpu_switching_observer.h"
#include "ui/gl/gpu_timing.h"
#include "ui/gl/init/create_gr_gl_interface.h"
#include "ui/gl/scoped_make_current.h"
#include "third_party/angle/src/image_util/loadimage.h"
namespace gpu {
namespace gles2 {
namespace {
const char kOESDerivativeExtension[] = …;
const char kOESFboRenderMipmapExtension[] = …;
const char kEXTFragDepthExtension[] = …;
const char kEXTDrawBuffersExtension[] = …;
const char kEXTShaderTextureLodExtension[] = …;
const char kWEBGLMultiDrawExtension[] = …;
const char kWEBGLDrawInstancedBaseVertexBaseInstanceExtension[] = …;
const char kWEBGLMultiDrawInstancedBaseVertexBaseInstanceExtension[] = …;
template <typename MANAGER_TYPE, typename OBJECT_TYPE>
GLuint GetClientId(const MANAGER_TYPE* manager, const OBJECT_TYPE* object) { … }
template <typename OBJECT_TYPE>
GLuint GetServiceId(const OBJECT_TYPE* object) { … }
struct Vec4f { … };
struct TexSubCoord3D { … };
bool AllBitsSet(GLbitfield bits, GLbitfield ref) { … }
bool AnyBitsSet(GLbitfield bits, GLbitfield ref) { … }
bool AnyOtherBitsSet(GLbitfield bits, GLbitfield ref) { … }
void APIENTRY GLDebugMessageCallback(GLenum source,
GLenum type,
GLuint id,
GLenum severity,
GLsizei length,
const GLchar* message,
const GLvoid* user_param) { … }
}
class GLES2DecoderImpl;
#define LOCAL_SET_GL_ERROR(error, function_name, msg) …
#define LOCAL_SET_GL_ERROR_INVALID_ENUM(function_name, value, label) …
#define LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER(function_name) …
#define LOCAL_PEEK_GL_ERROR(function_name) …
#define LOCAL_CLEAR_REAL_GL_ERRORS(function_name) …
#define LOCAL_PERFORMANCE_WARNING(msg) …
#define LOCAL_RENDER_WARNING(msg) …
static_assert …;
static_assert …;
static_assert …;
static bool CharacterIsValidForGLES(unsigned char c) { … }
static bool StringIsValidForGLES(const std::string& str) { … }
DisallowedFeatures::DisallowedFeatures() = default;
DisallowedFeatures::~DisallowedFeatures() = default;
DisallowedFeatures::DisallowedFeatures(const DisallowedFeatures&) = default;
class ScopedGLErrorSuppressor { … };
class ScopedTextureBinder { … };
class ScopedFramebufferBinder { … };
class ScopedFramebufferCopyBinder { … };
class ScopedPixelUnpackState { … };
class BackTexture { … };
class BackFramebuffer { … };
struct FenceCallback { … };
enum ForcedMultisampleMode { … };
const unsigned int GLES2Decoder::kDefaultStencilMask = …;
bool GLES2Decoder::GetServiceTextureId(uint32_t client_texture_id,
uint32_t* service_texture_id) { … }
uint32_t GLES2Decoder::GetAndClearBackbufferClearBitsForTest() { … }
GLES2Decoder::GLES2Decoder(DecoderClient* client,
CommandBufferServiceBase* command_buffer_service,
Outputter* outputter)
: … { … }
GLES2Decoder::~GLES2Decoder() = default;
bool GLES2Decoder::initialized() const { … }
TextureBase* GLES2Decoder::GetTextureBase(uint32_t client_id) { … }
void GLES2Decoder::SetLevelInfo(uint32_t client_id,
int level,
unsigned internal_format,
unsigned width,
unsigned height,
unsigned depth,
unsigned format,
unsigned type,
const gfx::Rect& cleared_rect) { … }
void GLES2Decoder::BeginDecoding() { … }
void GLES2Decoder::EndDecoding() { … }
std::string_view GLES2Decoder::GetLogPrefix() { … }
void GLES2Decoder::SetLogCommands(bool log_commands) { … }
Outputter* GLES2Decoder::outputter() const { … }
int GLES2Decoder::GetRasterDecoderId() const { … }
class GLES2DecoderImpl : public GLES2Decoder,
public ErrorStateClient,
public ui::GpuSwitchingObserver { … };
constexpr GLES2DecoderImpl::CommandInfo GLES2DecoderImpl::command_info[] = …;
ScopedGLErrorSuppressor::ScopedGLErrorSuppressor(
const char* function_name, ErrorState* error_state)
: … { … }
ScopedGLErrorSuppressor::~ScopedGLErrorSuppressor() { … }
static void RestoreCurrentTextureBindings(ContextState* state,
GLenum target,
GLuint texture_unit) { … }
ScopedTextureBinder::ScopedTextureBinder(ContextState* state,
ErrorState* error_state,
GLuint id,
GLenum target)
: … { … }
ScopedTextureBinder::~ScopedTextureBinder() { … }
ScopedFramebufferBinder::ScopedFramebufferBinder(GLES2DecoderImpl* decoder,
GLuint id)
: … { … }
ScopedFramebufferBinder::~ScopedFramebufferBinder() { … }
ScopedFramebufferCopyBinder::ScopedFramebufferCopyBinder(
GLES2DecoderImpl* decoder,
GLint x,
GLint y,
GLint width,
GLint height)
: … { … }
ScopedFramebufferCopyBinder::~ScopedFramebufferCopyBinder() { … }
ScopedPixelUnpackState::ScopedPixelUnpackState(ContextState* state)
: … { … }
ScopedPixelUnpackState::~ScopedPixelUnpackState() { … }
BackTexture::BackTexture(GLES2DecoderImpl* decoder)
: … { … }
BackTexture::~BackTexture() { … }
inline gl::GLApi* BackTexture::api() const { … }
void BackTexture::Create() { … }
bool BackTexture::AllocateStorage(
const gfx::Size& size, GLenum format, bool zero) { … }
void BackTexture::Copy() { … }
void BackTexture::Destroy() { … }
void BackTexture::Invalidate() { … }
GLenum BackTexture::Target() { … }
BackFramebuffer::BackFramebuffer(GLES2DecoderImpl* decoder)
: … { … }
BackFramebuffer::~BackFramebuffer() { … }
inline gl::GLApi* BackFramebuffer::api() const { … }
void BackFramebuffer::Create() { … }
void BackFramebuffer::AttachRenderTexture(BackTexture* texture) { … }
void BackFramebuffer::Destroy() { … }
void BackFramebuffer::Invalidate() { … }
GLenum BackFramebuffer::CheckStatus() { … }
GLES2Decoder* GLES2Decoder::Create(
DecoderClient* client,
CommandBufferServiceBase* command_buffer_service,
Outputter* outputter,
ContextGroup* group) { … }
GLES2DecoderImpl::GLES2DecoderImpl(
DecoderClient* client,
CommandBufferServiceBase* command_buffer_service,
Outputter* outputter,
ContextGroup* group)
: … { … }
GLES2DecoderImpl::~GLES2DecoderImpl() = default;
base::WeakPtr<DecoderContext> GLES2DecoderImpl::AsWeakPtr() { … }
gpu::ContextResult GLES2DecoderImpl::Initialize(
const scoped_refptr<gl::GLSurface>& surface,
const scoped_refptr<gl::GLContext>& context,
bool offscreen,
const DisallowedFeatures& disallowed_features,
const ContextCreationAttribs& attrib_helper) { … }
Capabilities GLES2DecoderImpl::GetCapabilities() { … }
GLCapabilities GLES2DecoderImpl::GetGLCapabilities() { … }
GLint GLES2DecoderImpl::ComputeMaxSamples() { … }
void GLES2DecoderImpl::UpdateCapabilities() { … }
bool GLES2DecoderImpl::InitializeShaderTranslator() { … }
void GLES2DecoderImpl::DestroyShaderTranslator() { … }
bool GLES2DecoderImpl::GenBuffersHelper(GLsizei n, const GLuint* client_ids) { … }
bool GLES2DecoderImpl::GenFramebuffersHelper(
GLsizei n, const GLuint* client_ids) { … }
bool GLES2DecoderImpl::GenRenderbuffersHelper(
GLsizei n, const GLuint* client_ids) { … }
bool GLES2DecoderImpl::GenTexturesHelper(GLsizei n, const GLuint* client_ids) { … }
bool GLES2DecoderImpl::GenSamplersHelper(GLsizei n, const GLuint* client_ids) { … }
bool GLES2DecoderImpl::GenTransformFeedbacksHelper(
GLsizei n, const GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteBuffersHelper(GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteFramebuffersHelper(
GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteRenderbuffersHelper(
GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteTexturesHelper(GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteSamplersHelper(GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteTransformFeedbacksHelper(
GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteSyncHelper(GLuint sync) { … }
bool GLES2DecoderImpl::MakeCurrent() { … }
void GLES2DecoderImpl::ProcessFinishedAsyncTransfers() { … }
static void RebindCurrentFramebuffer(gl::GLApi* api,
GLenum target,
Framebuffer* framebuffer,
GLuint back_buffer_service_id) { … }
void GLES2DecoderImpl::RestoreCurrentFramebufferBindings() { … }
bool GLES2DecoderImpl::CheckFramebufferValid(
Framebuffer* framebuffer,
GLenum target,
GLenum gl_error,
const char* func_name) { … }
bool GLES2DecoderImpl::CheckBoundDrawFramebufferValid(
const char* func_name,
bool check_float_blending) { … }
void GLES2DecoderImpl::UpdateFramebufferSRGB(Framebuffer* framebuffer) { … }
bool GLES2DecoderImpl::CheckBoundReadFramebufferValid(
const char* func_name, GLenum gl_error) { … }
bool GLES2DecoderImpl::CheckBoundFramebufferValid(const char* func_name) { … }
bool GLES2DecoderImpl::FormsTextureCopyingFeedbackLoop(
TextureRef* texture, GLint level, GLint layer) { … }
gfx::Size GLES2DecoderImpl::GetBoundReadFramebufferSize() { … }
gfx::Size GLES2DecoderImpl::GetBoundDrawFramebufferSize() { … }
GLuint GLES2DecoderImpl::GetBoundReadFramebufferServiceId() { … }
GLuint GLES2DecoderImpl::GetBoundDrawFramebufferServiceId() const { … }
GLenum GLES2DecoderImpl::GetBoundReadFramebufferTextureType() { … }
GLenum GLES2DecoderImpl::GetBoundReadFramebufferInternalFormat() { … }
GLenum GLES2DecoderImpl::GetBoundColorDrawBufferType(GLint drawbuffer_i) { … }
GLenum GLES2DecoderImpl::GetBoundColorDrawBufferInternalFormat(
GLint drawbuffer_i) { … }
GLsizei GLES2DecoderImpl::GetBoundFramebufferSamples(GLenum target) { … }
GLenum GLES2DecoderImpl::GetBoundFramebufferDepthFormat(
GLenum target) { … }
GLenum GLES2DecoderImpl::GetBoundFramebufferStencilFormat(
GLenum target) { … }
void GLES2DecoderImpl::MarkDrawBufferAsCleared(
GLenum buffer, GLint drawbuffer_i) { … }
Logger* GLES2DecoderImpl::GetLogger() { … }
void GLES2DecoderImpl::BeginDecoding() { … }
void GLES2DecoderImpl::EndDecoding() { … }
ErrorState* GLES2DecoderImpl::GetErrorState() { … }
bool GLES2DecoderImpl::GetServiceTextureId(uint32_t client_texture_id,
uint32_t* service_texture_id) { … }
TextureBase* GLES2DecoderImpl::GetTextureBase(uint32_t client_id) { … }
void GLES2DecoderImpl::SetLevelInfo(uint32_t client_id,
int level,
unsigned internal_format,
unsigned width,
unsigned height,
unsigned depth,
unsigned format,
unsigned type,
const gfx::Rect& cleared_rect) { … }
void GLES2DecoderImpl::OnGpuSwitched(gl::GpuPreference active_gpu_heuristic) { … }
void GLES2DecoderImpl::Destroy(bool have_context) { … }
void GLES2DecoderImpl::SetSurface(const scoped_refptr<gl::GLSurface>& surface) { … }
void GLES2DecoderImpl::ReleaseSurface() { … }
void GLES2DecoderImpl::SetDefaultFramebufferSharedImage(const Mailbox& mailbox,
int samples,
bool preserve,
bool needs_depth,
bool needs_stencil) { … }
error::Error GLES2DecoderImpl::HandleCreateGpuFenceINTERNAL(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleWaitGpuFenceCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleDestroyGpuFenceCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
bool GLES2DecoderImpl::ResizeOffscreenFramebuffer(const gfx::Size& size) { … }
error::Error GLES2DecoderImpl::HandleResizeCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
const char* GLES2DecoderImpl::GetCommandName(unsigned int command_id) const { … }
template <bool DebugImpl>
error::Error GLES2DecoderImpl::DoCommandsImpl(unsigned int num_commands,
const volatile void* buffer,
int num_entries,
int* entries_processed) { … }
error::Error GLES2DecoderImpl::DoCommands(unsigned int num_commands,
const volatile void* buffer,
int num_entries,
int* entries_processed) { … }
void GLES2DecoderImpl::ExitCommandProcessingEarly() { … }
void GLES2DecoderImpl::DoFinish() { … }
void GLES2DecoderImpl::DoFlush() { … }
void GLES2DecoderImpl::DoActiveTexture(GLenum texture_unit) { … }
void GLES2DecoderImpl::DoBindBuffer(GLenum target, GLuint client_id) { … }
void GLES2DecoderImpl::BindIndexedBufferImpl(
GLenum target, GLuint index, GLuint client_id,
GLintptr offset, GLsizeiptr size,
BindIndexedBufferFunctionType function_type, const char* function_name) { … }
void GLES2DecoderImpl::DoBindBufferBase(GLenum target, GLuint index,
GLuint client_id) { … }
void GLES2DecoderImpl::DoBindBufferRange(GLenum target, GLuint index,
GLuint client_id,
GLintptr offset,
GLsizeiptr size) { … }
bool GLES2DecoderImpl::BoundFramebufferAllowsChangesToAlphaChannel() { … }
bool GLES2DecoderImpl::BoundFramebufferHasDepthAttachment() { … }
bool GLES2DecoderImpl::BoundFramebufferHasStencilAttachment() { … }
void GLES2DecoderImpl::ApplyDirtyState() { … }
GLuint GLES2DecoderImpl::GetBackbufferServiceId() const { … }
void GLES2DecoderImpl::RestoreState(const ContextState* prev_state) { … }
void GLES2DecoderImpl::RestoreBufferBinding(unsigned int target) { … }
void GLES2DecoderImpl::RestoreFramebufferBindings() const { … }
void GLES2DecoderImpl::RestoreRenderbufferBindings() { … }
void GLES2DecoderImpl::RestoreTextureState(unsigned service_id) { … }
void GLES2DecoderImpl::ClearDeviceWindowRectangles() const { … }
void GLES2DecoderImpl::RestoreDeviceWindowRectangles() const { … }
void GLES2DecoderImpl::ClearAllAttributes() const { … }
void GLES2DecoderImpl::RestoreAllAttributes() const { … }
void GLES2DecoderImpl::SetIgnoreCachedStateForTest(bool ignore) { … }
void GLES2DecoderImpl::SetForceShaderNameHashingForTest(bool force) { … }
uint32_t GLES2DecoderImpl::GetAndClearBackbufferClearBitsForTest() { … }
void GLES2DecoderImpl::OnFboChanged() const { … }
void GLES2DecoderImpl::OnUseFramebuffer() const { … }
void GLES2DecoderImpl::DoBindFramebuffer(GLenum target, GLuint client_id) { … }
void GLES2DecoderImpl::DoBindRenderbuffer(GLenum target, GLuint client_id) { … }
void GLES2DecoderImpl::UpdateTextureBinding(GLenum target,
GLuint client_id,
TextureRef* texture) { … }
void GLES2DecoderImpl::DoBindTexture(GLenum target, GLuint client_id) { … }
void GLES2DecoderImpl::DoBindSampler(GLuint unit, GLuint client_id) { … }
void GLES2DecoderImpl::DoBindTransformFeedback(
GLenum target, GLuint client_id) { … }
void GLES2DecoderImpl::DoBeginTransformFeedback(GLenum primitive_mode) { … }
void GLES2DecoderImpl::DoEndTransformFeedback() { … }
void GLES2DecoderImpl::DoPauseTransformFeedback() { … }
void GLES2DecoderImpl::DoResumeTransformFeedback() { … }
void GLES2DecoderImpl::DoDisableVertexAttribArray(GLuint index) { … }
void GLES2DecoderImpl::InvalidateFramebufferImpl(
GLenum target,
GLsizei count,
const volatile GLenum* attachments,
GLint x,
GLint y,
GLsizei width,
GLsizei height,
const char* function_name,
FramebufferOperation op) { … }
void GLES2DecoderImpl::DoDiscardFramebufferEXT(
GLenum target,
GLsizei count,
const volatile GLenum* attachments) { … }
void GLES2DecoderImpl::DoInvalidateFramebuffer(
GLenum target,
GLsizei count,
const volatile GLenum* attachments) { … }
void GLES2DecoderImpl::DoInvalidateSubFramebuffer(
GLenum target,
GLsizei count,
const volatile GLenum* attachments,
GLint x,
GLint y,
GLsizei width,
GLsizei height) { … }
void GLES2DecoderImpl::DoEnableVertexAttribArray(GLuint index) { … }
void GLES2DecoderImpl::DoGenerateMipmap(GLenum target) { … }
bool GLES2DecoderImpl::GetHelper(
GLenum pname, GLint* params, GLsizei* num_written) { … }
bool GLES2DecoderImpl::GetNumValuesReturnedForGLGet(
GLenum pname, GLsizei* num_values) { … }
GLenum GLES2DecoderImpl::AdjustGetPname(GLenum pname) { … }
void GLES2DecoderImpl::DoGetBooleanv(GLenum pname,
GLboolean* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetFloatv(GLenum pname,
GLfloat* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetInteger64v(GLenum pname,
GLint64* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetIntegerv(GLenum pname,
GLint* params,
GLsizei params_size) { … }
template <typename TYPE>
void GLES2DecoderImpl::GetIndexedIntegerImpl(
const char* function_name, GLenum target, GLuint index, TYPE* data) { … }
void GLES2DecoderImpl::DoGetBooleani_v(GLenum target,
GLuint index,
GLboolean* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetIntegeri_v(GLenum target,
GLuint index,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetInteger64i_v(GLenum target,
GLuint index,
GLint64* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetProgramiv(GLuint program_id,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetSynciv(GLuint sync_id,
GLenum pname,
GLsizei num_values,
GLsizei* length,
GLint* values) { … }
void GLES2DecoderImpl::DoGetBufferParameteri64v(GLenum target,
GLenum pname,
GLint64* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetBufferParameteriv(GLenum target,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoBindAttribLocation(GLuint program_id,
GLuint index,
const std::string& name) { … }
error::Error GLES2DecoderImpl::HandleBindAttribLocationBucket(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::DoBindFragDataLocation(GLuint program_id,
GLuint colorName,
const std::string& name) { … }
error::Error GLES2DecoderImpl::HandleBindFragDataLocationEXTBucket(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::DoBindFragDataLocationIndexed(
GLuint program_id,
GLuint colorName,
GLuint index,
const std::string& name) { … }
error::Error GLES2DecoderImpl::HandleBindFragDataLocationIndexedEXTBucket(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
void GLES2DecoderImpl::DoBindUniformLocationCHROMIUM(GLuint program_id,
GLint location,
const std::string& name) { … }
error::Error GLES2DecoderImpl::HandleBindUniformLocationCHROMIUMBucket(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleDeleteShader(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleDeleteProgram(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::DoClear(GLbitfield mask) { … }
void GLES2DecoderImpl::DoClearBufferiv(GLenum buffer,
GLint drawbuffer,
const volatile GLint* value) { … }
void GLES2DecoderImpl::DoClearBufferuiv(GLenum buffer,
GLint drawbuffer,
const volatile GLuint* value) { … }
void GLES2DecoderImpl::DoClearBufferfv(GLenum buffer,
GLint drawbuffer,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoClearBufferfi(
GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { … }
void GLES2DecoderImpl::DoFramebufferParameteri(GLenum target,
GLenum pname,
GLint param) { … }
void GLES2DecoderImpl::DoFramebufferRenderbuffer(
GLenum target, GLenum attachment, GLenum renderbuffertarget,
GLuint client_renderbuffer_id) { … }
void GLES2DecoderImpl::DoDisable(GLenum cap) { … }
void GLES2DecoderImpl::DoDisableiOES(GLenum target, GLuint index) { … }
void GLES2DecoderImpl::DoEnable(GLenum cap) { … }
void GLES2DecoderImpl::DoEnableiOES(GLenum target, GLuint index) { … }
void GLES2DecoderImpl::DoDepthRangef(GLclampf znear, GLclampf zfar) { … }
void GLES2DecoderImpl::DoSampleCoverage(GLclampf value, GLboolean invert) { … }
void GLES2DecoderImpl::ClearUnclearedAttachments(
GLenum target, Framebuffer* framebuffer) { … }
void GLES2DecoderImpl::RestoreClearState() { … }
GLenum GLES2DecoderImpl::DoCheckFramebufferStatus(GLenum target) { … }
void GLES2DecoderImpl::DoFramebufferTexture2D(
GLenum target, GLenum attachment, GLenum textarget,
GLuint client_texture_id, GLint level) { … }
void GLES2DecoderImpl::DoFramebufferTexture2DMultisample(
GLenum target, GLenum attachment, GLenum textarget,
GLuint client_texture_id, GLint level, GLsizei samples) { … }
void GLES2DecoderImpl::DoFramebufferTexture2DCommon(
const char* name, GLenum target, GLenum attachment, GLenum textarget,
GLuint client_texture_id, GLint level, GLsizei samples) { … }
void GLES2DecoderImpl::DoFramebufferTextureLayer(
GLenum target, GLenum attachment, GLuint client_texture_id,
GLint level, GLint layer) { … }
void GLES2DecoderImpl::DoFramebufferTextureMultiviewOVR(
GLenum target,
GLenum attachment,
GLuint client_texture_id,
GLint level,
GLint base_view_index,
GLsizei num_views) { … }
void GLES2DecoderImpl::DoGetFramebufferAttachmentParameteriv(
GLenum target,
GLenum attachment,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetRenderbufferParameteriv(GLenum target,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoBlitFramebufferCHROMIUM(
GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
GLbitfield mask, GLenum filter) { … }
void GLES2DecoderImpl::UnbindTexture(TextureRef* texture_ref,
bool supports_separate_framebuffer_binds) { … }
void GLES2DecoderImpl::EnsureRenderbufferBound() { … }
void GLES2DecoderImpl::RenderbufferStorageMultisampleWithWorkaround(
GLenum target,
GLsizei samples,
GLenum internal_format,
GLsizei width,
GLsizei height,
ForcedMultisampleMode mode) { … }
void GLES2DecoderImpl::RenderbufferStorageMultisampleHelper(
GLenum target,
GLsizei samples,
GLenum internal_format,
GLsizei width,
GLsizei height,
ForcedMultisampleMode mode) { … }
void GLES2DecoderImpl::RenderbufferStorageMultisampleHelperAMD(
GLenum target,
GLsizei samples,
GLsizei storageSamples,
GLenum internal_format,
GLsizei width,
GLsizei height,
ForcedMultisampleMode mode) { … }
bool GLES2DecoderImpl::RegenerateRenderbufferIfNeeded(
Renderbuffer* renderbuffer) { … }
bool GLES2DecoderImpl::ValidateRenderbufferStorageMultisample(
GLsizei samples,
GLenum internalformat,
GLsizei width,
GLsizei height) { … }
bool GLES2DecoderImpl::ValidateRenderbufferStorageMultisampleAMD(
GLsizei samples,
GLsizei storageSamples,
GLenum internalformat,
GLsizei width,
GLsizei height) { … }
void GLES2DecoderImpl::DoRenderbufferStorageMultisampleCHROMIUM(
GLenum target, GLsizei samples, GLenum internalformat,
GLsizei width, GLsizei height) { … }
void GLES2DecoderImpl::DoRenderbufferStorageMultisampleAdvancedAMD(
GLenum target,
GLsizei samples,
GLsizei storageSamples,
GLenum internalformat,
GLsizei width,
GLsizei height) { … }
void GLES2DecoderImpl::DoRenderbufferStorageMultisampleEXT(
GLenum target, GLsizei samples, GLenum internalformat,
GLsizei width, GLsizei height) { … }
void GLES2DecoderImpl::DoReleaseShaderCompiler() { … }
void GLES2DecoderImpl::DoRenderbufferStorage(
GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { … }
void GLES2DecoderImpl::DoLineWidth(GLfloat width) { … }
void GLES2DecoderImpl::DoLinkProgram(GLuint program_id) { … }
void GLES2DecoderImpl::DoReadBuffer(GLenum src) { … }
void GLES2DecoderImpl::DoSamplerParameterf(
GLuint client_id, GLenum pname, GLfloat param) { … }
void GLES2DecoderImpl::DoSamplerParameteri(
GLuint client_id, GLenum pname, GLint param) { … }
void GLES2DecoderImpl::DoSamplerParameterfv(GLuint client_id,
GLenum pname,
const volatile GLfloat* params) { … }
void GLES2DecoderImpl::DoSamplerParameteriv(GLuint client_id,
GLenum pname,
const volatile GLint* params) { … }
void GLES2DecoderImpl::DoTexParameterf(
GLenum target, GLenum pname, GLfloat param) { … }
void GLES2DecoderImpl::DoTexParameteri(
GLenum target, GLenum pname, GLint param) { … }
void GLES2DecoderImpl::DoTexParameterfv(GLenum target,
GLenum pname,
const volatile GLfloat* params) { … }
void GLES2DecoderImpl::DoTexParameteriv(GLenum target,
GLenum pname,
const volatile GLint* params) { … }
bool GLES2DecoderImpl::CheckCurrentProgram(const char* function_name) { … }
bool GLES2DecoderImpl::CheckCurrentProgramForUniform(
GLint location, const char* function_name) { … }
bool GLES2DecoderImpl::CheckDrawingFeedbackLoopsHelper(
const Framebuffer::Attachment* attachment,
TextureRef* texture_ref,
const char* function_name) { … }
bool GLES2DecoderImpl::SupportsDrawBuffers() const { … }
bool GLES2DecoderImpl::ValidateAndAdjustDrawBuffers(const char* func_name) { … }
void GLES2DecoderImpl::AdjustDrawBuffers() { … }
bool GLES2DecoderImpl::ValidateUniformBlockBackings(const char* func_name) { … }
bool GLES2DecoderImpl::CheckUniformForApiType(const Program::UniformInfo* info,
const char* function_name,
UniformApiType api_type) { … }
bool GLES2DecoderImpl::PrepForSetUniformByLocation(GLint fake_location,
const char* function_name,
UniformApiType api_type,
GLint* real_location,
GLenum* type,
GLsizei* count) { … }
void GLES2DecoderImpl::DoUniform1i(GLint fake_location, GLint v0) { … }
void GLES2DecoderImpl::DoUniform1iv(GLint fake_location,
GLsizei count,
const volatile GLint* values) { … }
void GLES2DecoderImpl::DoUniform1uiv(GLint fake_location,
GLsizei count,
const volatile GLuint* value) { … }
void GLES2DecoderImpl::DoUniform1fv(GLint fake_location,
GLsizei count,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniform2fv(GLint fake_location,
GLsizei count,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniform3fv(GLint fake_location,
GLsizei count,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniform4fv(GLint fake_location,
GLsizei count,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniform2iv(GLint fake_location,
GLsizei count,
const volatile GLint* value) { … }
void GLES2DecoderImpl::DoUniform2uiv(GLint fake_location,
GLsizei count,
const volatile GLuint* value) { … }
void GLES2DecoderImpl::DoUniform3iv(GLint fake_location,
GLsizei count,
const volatile GLint* value) { … }
void GLES2DecoderImpl::DoUniform3uiv(GLint fake_location,
GLsizei count,
const volatile GLuint* value) { … }
void GLES2DecoderImpl::DoUniform4iv(GLint fake_location,
GLsizei count,
const volatile GLint* value) { … }
void GLES2DecoderImpl::DoUniform4uiv(GLint fake_location,
GLsizei count,
const volatile GLuint* value) { … }
void GLES2DecoderImpl::DoUniformMatrix2fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix3fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix4fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix2x3fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix2x4fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix3x2fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix3x4fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix4x2fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUniformMatrix4x3fv(GLint fake_location,
GLsizei count,
GLboolean transpose,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoUseProgram(GLuint program_id) { … }
void GLES2DecoderImpl::RenderWarning(
const char* filename, int line, const std::string& msg) { … }
void GLES2DecoderImpl::PerformanceWarning(
const char* filename, int line, const std::string& msg) { … }
void GLES2DecoderImpl::DoCopyBufferSubData(GLenum readtarget,
GLenum writetarget,
GLintptr readoffset,
GLintptr writeoffset,
GLsizeiptr size) { … }
bool GLES2DecoderImpl::PrepareTexturesForRender(bool* textures_set,
const char* function_name) { … }
void GLES2DecoderImpl::RestoreStateForTextures() { … }
bool GLES2DecoderImpl::ClearUnclearedTextures() { … }
bool GLES2DecoderImpl::ValidateStencilStateForDraw(const char* function_name) { … }
bool GLES2DecoderImpl::IsDrawValid(const char* function_name,
GLuint max_vertex_accessed,
bool instanced,
GLsizei primcount,
GLint basevertex,
GLuint baseinstance) { … }
void GLES2DecoderImpl::RestoreStateForAttrib(
GLuint attrib_index, bool restore_array_binding) { … }
bool GLES2DecoderImpl::AttribsTypeMatch() { … }
template <GLES2DecoderImpl::DrawArraysOption option>
ALWAYS_INLINE bool GLES2DecoderImpl::CheckMultiDrawArraysVertices(
const char* function_name,
bool instanced,
const GLint* firsts,
const GLsizei* counts,
const GLsizei* primcounts,
const GLuint* baseinstances,
GLsizei drawcount,
GLuint* total_max_vertex_accessed,
GLsizei* total_max_primcount) { … }
ALWAYS_INLINE bool GLES2DecoderImpl::CheckTransformFeedback(
const char* function_name,
bool instanced,
GLenum mode,
const GLsizei* counts,
const GLsizei* primcounts,
GLsizei drawcount,
GLsizei* vertices_drawn) { … }
template <GLES2DecoderImpl::DrawArraysOption option>
ALWAYS_INLINE error::Error GLES2DecoderImpl::DoMultiDrawArrays(
const char* function_name,
bool instanced,
GLenum mode,
const GLint* firsts,
const GLsizei* counts,
const GLsizei* primcounts,
const GLuint* baseinstances,
GLsizei drawcount) { … }
error::Error GLES2DecoderImpl::HandleDrawArrays(uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleDrawArraysInstancedANGLE(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleDrawArraysInstancedBaseInstanceANGLE(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
template <GLES2DecoderImpl::DrawElementsOption option>
ALWAYS_INLINE bool GLES2DecoderImpl::CheckMultiDrawElementsVertices(
const char* function_name,
bool instanced,
const GLsizei* counts,
GLenum type,
const int32_t* offsets,
const GLsizei* primcounts,
const GLint* basevertices,
const GLuint* baseinstances,
GLsizei drawcount,
Buffer* element_array_buffer,
GLuint* total_max_vertex_accessed,
GLsizei* total_max_primcount) { … }
template <GLES2DecoderImpl::DrawElementsOption option>
ALWAYS_INLINE error::Error GLES2DecoderImpl::DoMultiDrawElements(
const char* function_name,
bool instanced,
GLenum mode,
const GLsizei* counts,
GLenum type,
const int32_t* offsets,
const GLsizei* primcounts,
const GLint* basevertices,
const GLuint* baseinstances,
GLsizei drawcount) { … }
error::Error GLES2DecoderImpl::HandleDrawElements(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleDrawElementsInstancedANGLE(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error
GLES2DecoderImpl::HandleDrawElementsInstancedBaseVertexBaseInstanceANGLE(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
void GLES2DecoderImpl::DoMultiDrawBeginCHROMIUM(GLsizei drawcount) { … }
void GLES2DecoderImpl::DoMultiDrawEndCHROMIUM() { … }
error::Error GLES2DecoderImpl::HandleMultiDrawArraysCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleMultiDrawArraysInstancedCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error
GLES2DecoderImpl::HandleMultiDrawArraysInstancedBaseInstanceCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleMultiDrawElementsCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleMultiDrawElementsInstancedCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::
HandleMultiDrawElementsInstancedBaseVertexBaseInstanceCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
GLuint GLES2DecoderImpl::DoGetMaxValueInBufferCHROMIUM(
GLuint buffer_id, GLsizei count, GLenum type, GLuint offset) { … }
void GLES2DecoderImpl::DoShaderSource(
GLuint client_id, GLsizei count, const char** data, const GLint* length) { … }
void GLES2DecoderImpl::DoTransformFeedbackVaryings(
GLuint client_program_id, GLsizei count, const char* const* varyings,
GLenum buffer_mode) { … }
scoped_refptr<ShaderTranslatorInterface> GLES2DecoderImpl::GetTranslator(
GLenum type) { … }
scoped_refptr<ShaderTranslatorInterface>
GLES2DecoderImpl::GetOrCreateTranslator(GLenum type) { … }
void GLES2DecoderImpl::DoCompileShader(GLuint client_id) { … }
void GLES2DecoderImpl::DoGetShaderiv(GLuint shader_id,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
error::Error GLES2DecoderImpl::HandleGetShaderSource(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetTranslatedShaderSourceANGLE(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetProgramInfoLog(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetShaderInfoLog(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
bool GLES2DecoderImpl::DoIsEnabled(GLenum cap) { … }
bool GLES2DecoderImpl::DoIsEnablediOES(GLenum target, GLuint index) { … }
bool GLES2DecoderImpl::DoIsBuffer(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsFramebuffer(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsProgram(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsRenderbuffer(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsShader(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsTexture(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsSampler(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsTransformFeedback(GLuint client_id) { … }
void GLES2DecoderImpl::DoAttachShader(
GLuint program_client_id, GLint shader_client_id) { … }
void GLES2DecoderImpl::DoDetachShader(
GLuint program_client_id, GLint shader_client_id) { … }
void GLES2DecoderImpl::DoValidateProgram(GLuint program_client_id) { … }
void GLES2DecoderImpl::GetVertexAttribHelper(
const VertexAttrib* attrib, GLenum pname, GLint* params) { … }
void GLES2DecoderImpl::DoGetSamplerParameterfv(GLuint client_id,
GLenum pname,
GLfloat* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetSamplerParameteriv(GLuint client_id,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::GetTexParameterImpl(
GLenum target, GLenum pname, GLfloat* fparams, GLint* iparams,
const char* function_name) { … }
void GLES2DecoderImpl::DoGetTexParameterfv(GLenum target,
GLenum pname,
GLfloat* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetTexParameteriv(GLenum target,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
template <typename T>
void GLES2DecoderImpl::DoGetVertexAttribImpl(
GLuint index, GLenum pname, T* params) { … }
void GLES2DecoderImpl::DoGetVertexAttribfv(GLuint index,
GLenum pname,
GLfloat* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetVertexAttribiv(GLuint index,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetVertexAttribIiv(GLuint index,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetVertexAttribIuiv(GLuint index,
GLenum pname,
GLuint* params,
GLsizei params_size) { … }
template <typename T>
bool GLES2DecoderImpl::SetVertexAttribValue(
const char* function_name, GLuint index, const T* value) { … }
void GLES2DecoderImpl::DoVertexAttrib1f(GLuint index, GLfloat v0) { … }
void GLES2DecoderImpl::DoVertexAttrib2f(GLuint index, GLfloat v0, GLfloat v1) { … }
void GLES2DecoderImpl::DoVertexAttrib3f(
GLuint index, GLfloat v0, GLfloat v1, GLfloat v2) { … }
void GLES2DecoderImpl::DoVertexAttrib4f(
GLuint index, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { … }
void GLES2DecoderImpl::DoVertexAttrib1fv(GLuint index,
const volatile GLfloat* v) { … }
void GLES2DecoderImpl::DoVertexAttrib2fv(GLuint index,
const volatile GLfloat* v) { … }
void GLES2DecoderImpl::DoVertexAttrib3fv(GLuint index,
const volatile GLfloat* v) { … }
void GLES2DecoderImpl::DoVertexAttrib4fv(GLuint index,
const volatile GLfloat* v) { … }
void GLES2DecoderImpl::DoVertexAttribI4i(
GLuint index, GLint v0, GLint v1, GLint v2, GLint v3) { … }
void GLES2DecoderImpl::DoVertexAttribI4iv(GLuint index,
const volatile GLint* v) { … }
void GLES2DecoderImpl::DoVertexAttribI4ui(
GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { … }
void GLES2DecoderImpl::DoVertexAttribI4uiv(GLuint index,
const volatile GLuint* v) { … }
error::Error GLES2DecoderImpl::HandleVertexAttribIPointer(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleVertexAttribPointer(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
void GLES2DecoderImpl::DoViewport(GLint x, GLint y, GLsizei width,
GLsizei height) { … }
void GLES2DecoderImpl::DoScissor(GLint x,
GLint y,
GLsizei width,
GLsizei height) { … }
error::Error GLES2DecoderImpl::HandleVertexAttribDivisorANGLE(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
template <typename pixel_data_type>
static void WriteAlphaData(void* pixels,
uint32_t row_count,
uint32_t channel_count,
uint32_t alpha_channel_index,
uint32_t unpadded_row_size,
uint32_t padded_row_size,
pixel_data_type alpha_value) { … }
void GLES2DecoderImpl::FinishReadPixels(GLsizei width,
GLsizei height,
GLsizei format,
GLsizei type,
uint32_t pixels_shm_id,
uint32_t pixels_shm_offset,
uint32_t result_shm_id,
uint32_t result_shm_offset,
GLint pack_alignment,
GLenum read_format,
GLuint buffer) { … }
error::Error GLES2DecoderImpl::HandleReadbackARGBImagePixelsINTERNAL(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleWritePixelsYUVINTERNAL(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleReadPixels(uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandlePixelStorei(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::GetAttribLocationHelper(
GLuint client_id,
uint32_t location_shm_id,
uint32_t location_shm_offset,
const std::string& name_str) { … }
error::Error GLES2DecoderImpl::HandleGetAttribLocation(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::GetUniformLocationHelper(
GLuint client_id,
uint32_t location_shm_id,
uint32_t location_shm_offset,
const std::string& name_str) { … }
error::Error GLES2DecoderImpl::HandleGetUniformLocation(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetUniformIndices(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::GetFragDataLocationHelper(
GLuint client_id,
uint32_t location_shm_id,
uint32_t location_shm_offset,
const std::string& name_str) { … }
error::Error GLES2DecoderImpl::HandleGetFragDataLocation(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::GetFragDataIndexHelper(
GLuint program_id,
uint32_t index_shm_id,
uint32_t index_shm_offset,
const std::string& name_str) { … }
error::Error GLES2DecoderImpl::HandleGetFragDataIndexEXT(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetUniformBlockIndex(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetString(uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleBufferData(uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
void GLES2DecoderImpl::DoBufferSubData(
GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data) { … }
bool GLES2DecoderImpl::ClearLevel(Texture* texture,
unsigned target,
int level,
unsigned format,
unsigned type,
int xoffset,
int yoffset,
int width,
int height) { … }
bool GLES2DecoderImpl::ClearLevelUsingGL(Texture* texture,
uint32_t channels,
unsigned target,
int level,
int xoffset,
int yoffset,
int width,
int height) { … }
bool GLES2DecoderImpl::ClearCompressedTextureLevel(Texture* texture,
unsigned target,
int level,
unsigned format,
int width,
int height) { … }
bool GLES2DecoderImpl::ClearCompressedTextureLevel3D(Texture* texture,
unsigned target,
int level,
unsigned format,
int width,
int height,
int depth) { … }
bool GLES2DecoderImpl::IsCompressedTextureFormat(unsigned format) { … }
bool GLES2DecoderImpl::ClearLevel3D(Texture* texture,
unsigned target,
int level,
unsigned format,
unsigned type,
int width,
int height,
int depth) { … }
namespace {
bool CheckETCFormatSupport(const FeatureInfo& feature_info) { … }
CompressedFormatSupportCheck;
CompressedFormatDecompressionFunction;
struct CompressedFormatInfo { … };
const CompressedFormatInfo kCompressedFormatInfoArray[] = …;
const CompressedFormatInfo* GetCompressedFormatInfo(GLenum format) { … }
uint32_t GetCompressedFormatRowPitch(const CompressedFormatInfo& info,
uint32_t width) { … }
uint32_t GetCompressedFormatDepthPitch(const CompressedFormatInfo& info,
uint32_t width,
uint32_t height) { … }
base::HeapArray<uint8_t> DecompressTextureData(const ContextState& state,
const CompressedFormatInfo& info,
uint32_t width,
uint32_t height,
uint32_t depth,
GLsizei image_size,
const void* data) { … }
}
bool GLES2DecoderImpl::ValidateCompressedTexFuncData(const char* function_name,
GLsizei width,
GLsizei height,
GLsizei depth,
GLenum format,
GLsizei size,
const GLvoid* data) { … }
bool GLES2DecoderImpl::ValidateCompressedTexDimensions(
const char* function_name, GLenum target, GLint level,
GLsizei width, GLsizei height, GLsizei depth, GLenum format) { … }
bool GLES2DecoderImpl::ValidateCompressedTexSubDimensions(
const char* function_name,
GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format,
Texture* texture) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexImage2DBucket(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexImage2D(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexImage3DBucket(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexImage3D(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexSubImage3DBucket(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexSubImage3D(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::DoCompressedTexImage(
GLenum target, GLint level, GLenum internal_format, GLsizei width,
GLsizei height, GLsizei depth, GLint border, GLsizei image_size,
const void* data, ContextState::Dimension dimension) { … }
error::Error GLES2DecoderImpl::HandleTexImage2D(uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleTexImage3D(uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2DBucket(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2D(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::DoCompressedTexSubImage(
GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format,
GLsizei image_size, const void * data, ContextState::Dimension dimension) { … }
bool GLES2DecoderImpl::ValidateCopyTexFormat(const char* func_name,
GLenum internal_format,
GLenum read_format,
GLenum read_type) { … }
void GLES2DecoderImpl::DoCopyTexImage2D(
GLenum target,
GLint level,
GLenum internal_format,
GLint x,
GLint y,
GLsizei width,
GLsizei height,
GLint border) { … }
void GLES2DecoderImpl::DoCopyTexSubImage2D(
GLenum target,
GLint level,
GLint xoffset,
GLint yoffset,
GLint x,
GLint y,
GLsizei width,
GLsizei height) { … }
void GLES2DecoderImpl::DoCopyTexSubImage3D(
GLenum target,
GLint level,
GLint xoffset,
GLint yoffset,
GLint zoffset,
GLint x,
GLint y,
GLsizei width,
GLsizei height) { … }
error::Error GLES2DecoderImpl::HandleTexSubImage2D(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleTexSubImage3D(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetVertexAttribPointerv(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
template <class T>
bool GLES2DecoderImpl::GetUniformSetup(GLuint program_id,
GLint fake_location,
uint32_t shm_id,
uint32_t shm_offset,
error::Error* error,
GLint* real_location,
GLuint* service_id,
SizedResult<T>** result_pointer,
GLenum* result_type,
GLsizei* result_size) { … }
error::Error GLES2DecoderImpl::HandleGetUniformiv(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetUniformuiv(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetUniformfv(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetShaderPrecisionFormat(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetAttachedShaders(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetActiveUniform(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockiv(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetActiveUniformBlockName(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetActiveUniformsiv(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetActiveAttrib(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleShaderBinary(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
void GLES2DecoderImpl::DoSwapBuffers(uint64_t swap_id, GLbitfield flags) { … }
void GLES2DecoderImpl::FinishAsyncSwapBuffers(
uint64_t swap_id,
gfx::SwapCompletionResult result) { … }
void GLES2DecoderImpl::FinishSwapBuffers(gfx::SwapResult result) { … }
error::Error GLES2DecoderImpl::HandleEnableFeatureCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetRequestableExtensionsCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleRequestExtensionCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetProgramInfoCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetUniformBlocksCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetUniformsES3CHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetTransformFeedbackVarying(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleGetTransformFeedbackVaryingsCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
bool GLES2DecoderImpl::WasContextLost() const { … }
bool GLES2DecoderImpl::WasContextLostByRobustnessExtension() const { … }
void GLES2DecoderImpl::MarkContextLost(error::ContextLostReason reason) { … }
bool GLES2DecoderImpl::CheckResetStatus() { … }
error::Error GLES2DecoderImpl::HandleDescheduleUntilFinishedCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
bool GLES2DecoderImpl::GenQueriesEXTHelper(
GLsizei n, const GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteQueriesEXTHelper(
GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::SetQueryCallback(unsigned int query_client_id,
base::OnceClosure callback) { … }
void GLES2DecoderImpl::CancelAllQueries() { … }
bool GLES2DecoderImpl::HasPendingQueries() const { … }
void GLES2DecoderImpl::ProcessPendingQueries(bool did_finish) { … }
void GLES2DecoderImpl::WaitForReadPixels(base::OnceClosure callback) { … }
void GLES2DecoderImpl::ProcessPendingReadPixels(bool did_finish) { … }
void GLES2DecoderImpl::ProcessDescheduleUntilFinished() { … }
bool GLES2DecoderImpl::HasMoreIdleWork() const { … }
void GLES2DecoderImpl::PerformIdleWork() { … }
bool GLES2DecoderImpl::HasPollingWork() const { … }
void GLES2DecoderImpl::PerformPollingWork() { … }
error::Error GLES2DecoderImpl::HandleBeginQueryEXT(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
void GLES2DecoderImpl::ReadBackBuffersIntoShadowCopies(
base::flat_set<scoped_refptr<Buffer>> buffers_to_shadow_copy) { … }
error::Error GLES2DecoderImpl::HandleEndQueryEXT(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleQueryCounterEXT(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleSetDisjointValueSyncCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
bool GLES2DecoderImpl::GenVertexArraysOESHelper(
GLsizei n, const GLuint* client_ids) { … }
void GLES2DecoderImpl::DeleteVertexArraysOESHelper(
GLsizei n,
const volatile GLuint* client_ids) { … }
void GLES2DecoderImpl::DoBindVertexArrayOES(GLuint client_id) { … }
void GLES2DecoderImpl::EmulateVertexArrayState() { … }
bool GLES2DecoderImpl::DoIsVertexArrayOES(GLuint client_id) { … }
bool GLES2DecoderImpl::DoIsSync(GLuint client_id) { … }
bool GLES2DecoderImpl::ValidateCopyTextureCHROMIUMTextures(
const char* function_name,
GLenum dest_target,
TextureRef* source_texture_ref,
TextureRef* dest_texture_ref) { … }
bool GLES2DecoderImpl::CanUseCopyTextureCHROMIUMInternalFormat(
GLenum dest_internal_format) { … }
void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
GLuint source_id,
GLint source_level,
GLenum dest_target,
GLuint dest_id,
GLint dest_level,
GLenum internal_format,
GLenum dest_type,
GLboolean unpack_flip_y,
GLboolean unpack_premultiply_alpha,
GLboolean unpack_unmultiply_alpha) { … }
void GLES2DecoderImpl::CopySubTextureHelper(const char* function_name,
GLuint source_id,
GLint source_level,
GLenum dest_target,
GLuint dest_id,
GLint dest_level,
GLint xoffset,
GLint yoffset,
GLint x,
GLint y,
GLsizei width,
GLsizei height,
GLboolean unpack_flip_y,
GLboolean unpack_premultiply_alpha,
GLboolean unpack_unmultiply_alpha) { … }
void GLES2DecoderImpl::DoCopySubTextureCHROMIUM(
GLuint source_id,
GLint source_level,
GLenum dest_target,
GLuint dest_id,
GLint dest_level,
GLint xoffset,
GLint yoffset,
GLint x,
GLint y,
GLsizei width,
GLsizei height,
GLboolean unpack_flip_y,
GLboolean unpack_premultiply_alpha,
GLboolean unpack_unmultiply_alpha) { … }
bool GLES2DecoderImpl::InitializeCopyTexImageBlitter(
const char* function_name) { … }
bool GLES2DecoderImpl::InitializeCopyTextureCHROMIUM(
const char* function_name) { … }
void GLES2DecoderImpl::TexStorageImpl(GLenum target,
GLsizei levels,
GLenum internal_format,
GLsizei width,
GLsizei height,
GLsizei depth,
ContextState::Dimension dimension,
const char* function_name) { … }
void GLES2DecoderImpl::DoTexStorage2DEXT(GLenum target,
GLsizei levels,
GLenum internal_format,
GLsizei width,
GLsizei height) { … }
void GLES2DecoderImpl::DoTexStorage3D(GLenum target,
GLsizei levels,
GLenum internal_format,
GLsizei width,
GLsizei height,
GLsizei depth) { … }
void GLES2DecoderImpl::DoCreateAndTexStorage2DSharedImageINTERNAL(
GLuint client_id,
const volatile GLbyte* mailbox_data) { … }
void GLES2DecoderImpl::DoBeginSharedImageAccessDirectCHROMIUM(GLuint client_id,
GLenum mode) { … }
void GLES2DecoderImpl::DoEndSharedImageAccessDirectCHROMIUM(GLuint client_id) { … }
void GLES2DecoderImpl::DoConvertRGBAToYUVAMailboxesINTERNAL(
GLenum yuv_color_space,
GLenum plane_config,
GLenum subsampling,
const volatile GLbyte* mailboxes_in) { … }
void GLES2DecoderImpl::DoConvertYUVAMailboxesToRGBINTERNAL(
GLint src_x,
GLint src_y,
GLsizei width,
GLsizei height,
GLenum yuv_color_space,
GLenum plane_config,
GLenum subsampling,
const volatile GLbyte* mailboxes_in) { … }
void GLES2DecoderImpl::DoConvertYUVAMailboxesToTextureINTERNAL(
GLuint texture,
GLenum target,
GLuint internal_format,
GLenum type,
GLint src_x,
GLint src_y,
GLsizei width,
GLsizei height,
GLboolean flip_y,
GLenum yuv_color_space,
GLenum plane_config,
GLenum subsampling,
const volatile GLbyte* mailboxes_in) { … }
void GLES2DecoderImpl::DoCopySharedImageINTERNAL(
GLint xoffset,
GLint yoffset,
GLint x,
GLint y,
GLsizei width,
GLsizei height,
GLboolean unpack_flip_y,
const volatile GLbyte* mailboxes) { … }
void GLES2DecoderImpl::DoCopySharedImageToTextureINTERNAL(
GLuint texture,
GLenum target,
GLuint internal_format,
GLenum type,
GLint src_x,
GLint src_y,
GLsizei width,
GLsizei height,
GLboolean flip_y,
const volatile GLbyte* src_mailbox) { … }
void GLES2DecoderImpl::DoInsertEventMarkerEXT(
GLsizei length, const GLchar* marker) { … }
void GLES2DecoderImpl::DoPushGroupMarkerEXT(
GLsizei , const GLchar* ) { … }
void GLES2DecoderImpl::DoPopGroupMarkerEXT(void) { … }
error::Error GLES2DecoderImpl::HandleTraceBeginCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
void GLES2DecoderImpl::DoTraceEndCHROMIUM() { … }
void GLES2DecoderImpl::DoDrawBuffersEXT(GLsizei count,
const volatile GLenum* bufs) { … }
void GLES2DecoderImpl::DoLoseContextCHROMIUM(GLenum current, GLenum other) { … }
void GLES2DecoderImpl::DoFlushDriverCachesCHROMIUM(void) { … }
error::Error GLES2DecoderImpl::HandleUniformBlockBinding(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleClientWaitSync(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleWaitSync(uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
GLsync GLES2DecoderImpl::DoFenceSync(GLenum condition, GLbitfield flags) { … }
GLsizei GLES2DecoderImpl::InternalFormatSampleCountsHelper(
GLenum target,
GLenum internalformat,
std::vector<GLint>* out_sample_counts) { … }
error::Error GLES2DecoderImpl::HandleGetInternalformativ(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleMapBufferRange(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
bool GLES2DecoderImpl::UnmapBufferHelper(Buffer* buffer, GLenum target) { … }
error::Error GLES2DecoderImpl::HandleUnmapBuffer(
uint32_t immediate_data_size, const volatile void* cmd_data) { … }
void GLES2DecoderImpl::DoFlushMappedBufferRange(
GLenum target, GLintptr offset, GLsizeiptr size) { … }
void GLES2DecoderImpl::DoFramebufferMemorylessPixelLocalStorageANGLE(
GLint plane,
GLenum internalformat) { … }
void GLES2DecoderImpl::DoFramebufferTexturePixelLocalStorageANGLE(
GLint plane,
GLuint client_texture_id,
GLint level,
GLint layer) { … }
void GLES2DecoderImpl::DoFramebufferPixelLocalClearValuefvANGLE(
GLint plane,
const volatile GLfloat* value) { … }
void GLES2DecoderImpl::DoFramebufferPixelLocalClearValueivANGLE(
GLint plane,
const volatile GLint* value) { … }
void GLES2DecoderImpl::DoFramebufferPixelLocalClearValueuivANGLE(
GLint plane,
const volatile GLuint* value) { … }
void GLES2DecoderImpl::DoBeginPixelLocalStorageANGLE(
GLsizei n,
const volatile GLenum* loadops) { … }
void GLES2DecoderImpl::DoEndPixelLocalStorageANGLE(
GLsizei n,
const volatile GLenum* storeops) { … }
void GLES2DecoderImpl::DoPixelLocalStorageBarrierANGLE() { … }
void GLES2DecoderImpl::DoFramebufferPixelLocalStorageInterruptANGLE() { … }
void GLES2DecoderImpl::DoFramebufferPixelLocalStorageRestoreANGLE() { … }
void GLES2DecoderImpl::DoGetFramebufferPixelLocalStorageParameterfvANGLE(
GLint plane,
GLenum pname,
GLfloat* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::DoGetFramebufferPixelLocalStorageParameterivANGLE(
GLint plane,
GLenum pname,
GLint* params,
GLsizei params_size) { … }
void GLES2DecoderImpl::OnContextLostError() { … }
void GLES2DecoderImpl::OnOutOfMemoryError() { … }
const SamplerState& GLES2DecoderImpl::GetSamplerStateForTextureUnit(
GLenum target, GLuint unit) { … }
void GLES2DecoderImpl::ClearFramebufferForWorkaround(GLbitfield mask) { … }
void GLES2DecoderImpl::RestoreAllExternalTextureBindingsIfNeeded() { … }
void GLES2DecoderImpl::DoContextVisibilityHintCHROMIUM(GLboolean visibility) { … }
error::Error GLES2DecoderImpl::HandleInitializeDiscardableTextureCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleUnlockDiscardableTextureCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
error::Error GLES2DecoderImpl::HandleLockDiscardableTextureCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
scoped_refptr<gpu::Buffer> GLES2DecoderImpl::GetShmBuffer(uint32_t shm_id) { … }
void GLES2DecoderImpl::DoWindowRectanglesEXT(GLenum mode,
GLsizei n,
const volatile GLint* box) { … }
void GLES2DecoderImpl::DoSetReadbackBufferShadowAllocationINTERNAL(
GLuint buffer_id,
GLuint shm_id,
GLuint shm_offset,
GLuint size) { … }
void GLES2DecoderImpl::CompileShaderAndExitCommandProcessingEarly(
Shader* shader) { … }
void GLES2DecoderImpl::ReportProgress() { … }
error::Error GLES2DecoderImpl::HandleSetActiveURLCHROMIUM(
uint32_t immediate_data_size,
const volatile void* cmd_data) { … }
#include "build/chromeos_buildflags.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
}
}