2013-07-17 13:58:09 +00:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#ifndef WEBGL2CONTEXT_H_
|
|
|
|
#define WEBGL2CONTEXT_H_
|
|
|
|
|
|
|
|
#include "WebGLContext.h"
|
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
|
2015-05-25 11:50:15 +00:00
|
|
|
class ErrorResult;
|
2014-09-17 22:08:41 +00:00
|
|
|
class WebGLSampler;
|
|
|
|
class WebGLSync;
|
|
|
|
class WebGLTransformFeedback;
|
|
|
|
class WebGLVertexArrayObject;
|
2014-12-16 05:20:15 +00:00
|
|
|
namespace dom {
|
|
|
|
class OwningUnsignedLongOrUint32ArrayOrBoolean;
|
|
|
|
class OwningWebGLBufferOrLongLong;
|
2015-07-13 15:25:42 +00:00
|
|
|
} // namespace dom
|
2014-09-17 22:08:41 +00:00
|
|
|
|
2013-07-17 13:58:09 +00:00
|
|
|
class WebGL2Context
|
|
|
|
: public WebGLContext
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
virtual ~WebGL2Context();
|
|
|
|
|
|
|
|
static bool IsSupported();
|
|
|
|
static WebGL2Context* Create();
|
|
|
|
|
2015-03-21 16:28:04 +00:00
|
|
|
virtual bool IsWebGL2() const override
|
2014-09-17 22:08:41 +00:00
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2013-07-17 13:58:09 +00:00
|
|
|
// -------------------------------------------------------------------------
|
2014-09-17 22:08:41 +00:00
|
|
|
// IMPLEMENT nsWrapperCache
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2015-07-15 00:37:28 +00:00
|
|
|
virtual JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> givenProto) override;
|
2013-07-17 13:58:09 +00:00
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
2014-09-17 22:08:41 +00:00
|
|
|
// Buffer objects - WebGL2ContextBuffers.cpp
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
void CopyBufferSubData(GLenum readTarget, GLenum writeTarget,
|
|
|
|
GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
|
2015-10-14 05:48:19 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
template<typename BufferT>
|
|
|
|
void GetBufferSubDataT(GLenum target, GLintptr offset, const BufferT& data);
|
|
|
|
|
|
|
|
public:
|
2016-10-12 00:38:45 +00:00
|
|
|
void GetBufferSubData(GLenum target, GLintptr srcByteOffset,
|
|
|
|
const dom::ArrayBufferView& dstData, GLuint dstElemOffset,
|
|
|
|
GLuint dstElemCountOverride);
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Framebuffer objects - WebGL2ContextFramebuffers.cpp
|
|
|
|
|
|
|
|
void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
|
|
|
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
|
|
|
|
GLbitfield mask, GLenum filter);
|
2015-07-03 01:54:07 +00:00
|
|
|
void FramebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture* texture, GLint level, GLint layer);
|
2015-08-06 06:31:00 +00:00
|
|
|
|
|
|
|
virtual JS::Value GetFramebufferAttachmentParameter(JSContext* cx, GLenum target,
|
|
|
|
GLenum attachment, GLenum pname,
|
|
|
|
ErrorResult& rv) override;
|
|
|
|
|
2015-05-25 11:50:15 +00:00
|
|
|
void InvalidateFramebuffer(GLenum target, const dom::Sequence<GLenum>& attachments,
|
2015-07-15 00:37:28 +00:00
|
|
|
ErrorResult& rv);
|
2014-09-17 22:08:41 +00:00
|
|
|
void InvalidateSubFramebuffer (GLenum target, const dom::Sequence<GLenum>& attachments, GLint x, GLint y,
|
2015-07-15 00:37:28 +00:00
|
|
|
GLsizei width, GLsizei height, ErrorResult& rv);
|
2014-09-17 22:08:41 +00:00
|
|
|
void ReadBuffer(GLenum mode);
|
2015-07-03 01:54:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Renderbuffer objects - WebGL2ContextRenderbuffers.cpp
|
|
|
|
|
|
|
|
void GetInternalformatParameter(JSContext*, GLenum target, GLenum internalformat,
|
|
|
|
GLenum pname, JS::MutableHandleValue retval,
|
|
|
|
ErrorResult& rv);
|
2014-09-17 22:08:41 +00:00
|
|
|
void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat,
|
|
|
|
GLsizei width, GLsizei height);
|
2013-07-17 13:58:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
2014-09-17 22:08:41 +00:00
|
|
|
// Texture objects - WebGL2ContextTextures.cpp
|
|
|
|
|
2015-11-25 04:15:29 +00:00
|
|
|
void TexStorage2D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width,
|
|
|
|
GLsizei height);
|
|
|
|
void TexStorage3D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width,
|
|
|
|
GLsizei height, GLsizei depth);
|
2016-08-10 00:16:09 +00:00
|
|
|
|
2016-10-12 01:54:59 +00:00
|
|
|
////
|
|
|
|
|
|
|
|
private:
|
2015-11-25 04:15:29 +00:00
|
|
|
void TexImage3D(GLenum target, GLint level, GLenum internalFormat, GLsizei width,
|
|
|
|
GLsizei height, GLsizei depth, GLint border, GLenum unpackFormat,
|
2016-10-12 01:54:59 +00:00
|
|
|
GLenum unpackType, const dom::ArrayBufferView* srcView,
|
|
|
|
GLuint srcElemOffset);
|
|
|
|
|
|
|
|
public:
|
|
|
|
void TexImage3D(GLenum target, GLint level, GLenum internalFormat, GLsizei width,
|
|
|
|
GLsizei height, GLsizei depth, GLint border, GLenum unpackFormat,
|
|
|
|
GLenum unpackType,
|
2016-10-14 22:59:27 +00:00
|
|
|
const dom::Nullable<dom::ArrayBufferView>& maybeSrc, ErrorResult&)
|
2016-10-12 01:54:59 +00:00
|
|
|
{
|
|
|
|
const dom::ArrayBufferView* srcView = nullptr;
|
|
|
|
if (!maybeSrc.IsNull()) {
|
|
|
|
srcView = &maybeSrc.Value();
|
|
|
|
}
|
|
|
|
TexImage3D(target, level, internalFormat, width, height, depth, border,
|
|
|
|
unpackFormat, unpackType, srcView, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TexImage3D(GLenum target, GLint level, GLenum internalFormat, GLsizei width,
|
|
|
|
GLsizei height, GLsizei depth, GLint border, GLenum unpackFormat,
|
|
|
|
GLenum unpackType, const dom::ArrayBufferView& srcView,
|
2016-10-14 22:59:27 +00:00
|
|
|
GLuint srcElemOffset, ErrorResult&)
|
2016-10-12 01:54:59 +00:00
|
|
|
{
|
|
|
|
TexImage3D(target, level, internalFormat, width, height, depth, border,
|
|
|
|
unpackFormat, unpackType, &srcView, srcElemOffset);
|
|
|
|
}
|
|
|
|
|
|
|
|
////
|
2016-08-10 00:16:09 +00:00
|
|
|
|
2015-11-25 04:15:29 +00:00
|
|
|
void TexSubImage3D(GLenum target, GLint level, GLint xOffset, GLint yOffset,
|
|
|
|
GLint zOffset, GLsizei width, GLsizei height, GLsizei depth,
|
|
|
|
GLenum unpackFormat, GLenum unpackType,
|
2016-10-12 01:54:59 +00:00
|
|
|
const dom::ArrayBufferView& srcView, GLuint srcElemOffset,
|
|
|
|
ErrorResult&);
|
2015-11-25 04:15:29 +00:00
|
|
|
void TexSubImage3D(GLenum target, GLint level, GLint xOffset, GLint yOffset,
|
|
|
|
GLint zOffset, GLenum unpackFormat, GLenum unpackType,
|
2016-08-10 00:16:09 +00:00
|
|
|
const dom::ImageData& data, ErrorResult&);
|
2015-11-25 04:15:29 +00:00
|
|
|
void TexSubImage3D(GLenum target, GLint level, GLint xOffset, GLint yOffset,
|
|
|
|
GLint zOffset, GLenum unpackFormat, GLenum unpackType,
|
2016-08-10 00:16:09 +00:00
|
|
|
const dom::Element& elem, ErrorResult& out_error);
|
2015-11-25 04:15:29 +00:00
|
|
|
|
2016-10-12 01:54:59 +00:00
|
|
|
////
|
|
|
|
|
2015-11-25 04:15:29 +00:00
|
|
|
void CopyTexSubImage3D(GLenum target, GLint level, GLint xOffset, GLint yOffset,
|
|
|
|
GLint zOffset, GLint x, GLint y, GLsizei width,
|
|
|
|
GLsizei height);
|
2016-10-12 01:54:59 +00:00
|
|
|
|
|
|
|
////
|
|
|
|
|
2015-11-25 04:15:29 +00:00
|
|
|
void CompressedTexImage3D(GLenum target, GLint level, GLenum internalFormat,
|
2016-10-12 01:54:59 +00:00
|
|
|
GLsizei width, GLsizei height, GLsizei depth, GLint border,
|
|
|
|
const dom::ArrayBufferView& srcView, GLuint srcElemOffset);
|
2015-11-25 04:15:29 +00:00
|
|
|
void CompressedTexSubImage3D(GLenum target, GLint level, GLint xOffset, GLint yOffset,
|
|
|
|
GLint zOffset, GLsizei width, GLsizei height,
|
|
|
|
GLsizei depth, GLenum sizedUnpackFormat,
|
2016-10-12 01:54:59 +00:00
|
|
|
const dom::ArrayBufferView& srcView,
|
|
|
|
GLuint srcElemOffset);
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2016-07-07 20:02:00 +00:00
|
|
|
////////////////
|
|
|
|
// Texture PBOs
|
|
|
|
|
|
|
|
void TexImage3D(GLenum target, GLint level, GLenum internalFormat, GLsizei width,
|
|
|
|
GLsizei height, GLsizei depth, GLint border, GLenum unpackFormat,
|
2016-10-14 22:59:27 +00:00
|
|
|
GLenum unpackType, WebGLsizeiptr offset, ErrorResult&);
|
2016-07-07 20:02:00 +00:00
|
|
|
|
|
|
|
void TexSubImage3D(GLenum target, GLint level, GLint xOffset, GLint yOffset,
|
|
|
|
GLint zOffset, GLsizei width, GLsizei height, GLsizei depth,
|
|
|
|
GLenum unpackFormat, GLenum unpackType, WebGLsizeiptr offset,
|
|
|
|
ErrorResult&);
|
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Programs and shaders - WebGL2ContextPrograms.cpp
|
|
|
|
GLint GetFragDataLocation(WebGLProgram* program, const nsAString& name);
|
2013-07-17 13:58:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
2014-09-17 22:08:41 +00:00
|
|
|
// Uniforms and attributes - WebGL2ContextUniforms.cpp
|
|
|
|
void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
|
|
|
|
|
2016-07-14 19:13:47 +00:00
|
|
|
////////////////
|
2015-03-23 02:13:10 +00:00
|
|
|
|
2016-10-13 23:15:16 +00:00
|
|
|
// GL 3.0 & ES 3.0
|
|
|
|
void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
|
|
|
|
void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
|
2016-07-14 19:13:47 +00:00
|
|
|
|
2016-10-13 23:15:16 +00:00
|
|
|
void VertexAttribI4iv(GLuint index, const Int32ListU& list) {
|
|
|
|
const auto& arr = Int32Arr::From(list);
|
|
|
|
if (!ValidateAttribArraySetter("vertexAttribI4iv", 4, arr.elemCount))
|
|
|
|
return;
|
2015-03-23 01:29:32 +00:00
|
|
|
|
2016-10-13 23:15:16 +00:00
|
|
|
const auto& itr = arr.elemBytes;
|
|
|
|
VertexAttribI4i(index, itr[0], itr[1], itr[2], itr[3]);
|
2015-03-23 01:29:32 +00:00
|
|
|
}
|
|
|
|
|
2016-10-13 23:15:16 +00:00
|
|
|
void VertexAttribI4uiv(GLuint index, const Uint32ListU& list) {
|
|
|
|
const auto& arr = Uint32Arr::From(list);
|
|
|
|
if (!ValidateAttribArraySetter("vertexAttribI4uiv", 4, arr.elemCount))
|
|
|
|
return;
|
2015-03-23 01:29:32 +00:00
|
|
|
|
2016-10-13 23:15:16 +00:00
|
|
|
const auto& itr = arr.elemBytes;
|
|
|
|
VertexAttribI4ui(index, itr[0], itr[1], itr[2], itr[3]);
|
2015-03-23 01:29:32 +00:00
|
|
|
}
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Writing to the drawing buffer
|
2016-07-18 07:15:54 +00:00
|
|
|
|
|
|
|
/* Implemented in WebGLContext
|
2014-09-17 22:08:41 +00:00
|
|
|
void VertexAttribDivisor(GLuint index, GLuint divisor);
|
|
|
|
void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
|
|
|
|
void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
|
2016-07-18 07:15:54 +00:00
|
|
|
*/
|
2014-09-17 22:08:41 +00:00
|
|
|
void DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
|
|
|
|
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
// Multiple Render Targets - WebGL2ContextMRTs.cpp
|
2016-07-18 07:15:54 +00:00
|
|
|
/* Implemented in WebGLContext
|
2014-09-17 22:08:41 +00:00
|
|
|
void DrawBuffers(const dom::Sequence<GLenum>& buffers);
|
2016-07-18 07:15:54 +00:00
|
|
|
*/
|
2014-09-18 00:17:00 +00:00
|
|
|
|
2016-10-14 00:02:48 +00:00
|
|
|
private:
|
|
|
|
bool ValidateClearBuffer(const char* funcName, GLenum buffer, GLint drawBuffer,
|
|
|
|
size_t availElemCount, GLuint elemOffset);
|
2014-09-18 00:17:00 +00:00
|
|
|
|
2016-10-14 00:02:48 +00:00
|
|
|
void ClearBufferfv(GLenum buffer, GLint drawBuffer, const Float32Arr& src,
|
|
|
|
GLuint srcElemOffset);
|
|
|
|
void ClearBufferiv(GLenum buffer, GLint drawBuffer, const Int32Arr& src,
|
|
|
|
GLuint srcElemOffset);
|
|
|
|
void ClearBufferuiv(GLenum buffer, GLint drawBuffer, const Uint32Arr& src,
|
|
|
|
GLuint srcElemOffset);
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2016-10-14 00:02:48 +00:00
|
|
|
public:
|
|
|
|
void ClearBufferfv(GLenum buffer, GLint drawBuffer, const Float32ListU& list,
|
|
|
|
GLuint srcElemOffset)
|
|
|
|
{
|
|
|
|
ClearBufferfv(buffer, drawBuffer, Float32Arr::From(list), srcElemOffset);
|
|
|
|
}
|
|
|
|
void ClearBufferiv(GLenum buffer, GLint drawBuffer, const Int32ListU& list,
|
|
|
|
GLuint srcElemOffset)
|
|
|
|
{
|
|
|
|
ClearBufferiv(buffer, drawBuffer, Int32Arr::From(list), srcElemOffset);
|
|
|
|
}
|
|
|
|
void ClearBufferuiv(GLenum buffer, GLint drawBuffer, const Uint32ListU& list,
|
|
|
|
GLuint srcElemOffset)
|
|
|
|
{
|
|
|
|
ClearBufferuiv(buffer, drawBuffer, Uint32Arr::From(list), srcElemOffset);
|
|
|
|
}
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2016-10-14 00:02:48 +00:00
|
|
|
void ClearBufferfi(GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil);
|
2014-11-03 05:35:04 +00:00
|
|
|
|
2013-07-17 13:58:09 +00:00
|
|
|
// -------------------------------------------------------------------------
|
2014-09-17 22:08:41 +00:00
|
|
|
// Query Objects - WebGL2ContextQueries.cpp
|
2014-11-03 05:35:04 +00:00
|
|
|
|
|
|
|
already_AddRefed<WebGLQuery> CreateQuery();
|
2014-09-17 22:08:41 +00:00
|
|
|
void DeleteQuery(WebGLQuery* query);
|
|
|
|
bool IsQuery(WebGLQuery* query);
|
|
|
|
void BeginQuery(GLenum target, WebGLQuery* query);
|
|
|
|
void EndQuery(GLenum target);
|
2014-11-03 05:35:04 +00:00
|
|
|
already_AddRefed<WebGLQuery> GetQuery(GLenum target, GLenum pname);
|
2014-09-17 22:08:41 +00:00
|
|
|
void GetQueryParameter(JSContext*, WebGLQuery* query, GLenum pname, JS::MutableHandleValue retval);
|
2013-07-17 13:58:09 +00:00
|
|
|
|
2014-11-03 05:35:04 +00:00
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Sampler Objects - WebGL2ContextSamplers.cpp
|
|
|
|
|
|
|
|
already_AddRefed<WebGLSampler> CreateSampler();
|
|
|
|
void DeleteSampler(WebGLSampler* sampler);
|
|
|
|
bool IsSampler(WebGLSampler* sampler);
|
|
|
|
void BindSampler(GLuint unit, WebGLSampler* sampler);
|
|
|
|
void SamplerParameteri(WebGLSampler* sampler, GLenum pname, GLint param);
|
|
|
|
void SamplerParameteriv(WebGLSampler* sampler, GLenum pname, const dom::Int32Array& param);
|
|
|
|
void SamplerParameteriv(WebGLSampler* sampler, GLenum pname, const dom::Sequence<GLint>& param);
|
|
|
|
void SamplerParameterf(WebGLSampler* sampler, GLenum pname, GLfloat param);
|
|
|
|
void SamplerParameterfv(WebGLSampler* sampler, GLenum pname, const dom::Float32Array& param);
|
|
|
|
void SamplerParameterfv(WebGLSampler* sampler, GLenum pname, const dom::Sequence<GLfloat>& param);
|
|
|
|
void GetSamplerParameter(JSContext*, WebGLSampler* sampler, GLenum pname, JS::MutableHandleValue retval);
|
|
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Sync objects - WebGL2ContextSync.cpp
|
|
|
|
|
|
|
|
already_AddRefed<WebGLSync> FenceSync(GLenum condition, GLbitfield flags);
|
|
|
|
bool IsSync(WebGLSync* sync);
|
|
|
|
void DeleteSync(WebGLSync* sync);
|
|
|
|
GLenum ClientWaitSync(WebGLSync* sync, GLbitfield flags, GLuint64 timeout);
|
|
|
|
void WaitSync(WebGLSync* sync, GLbitfield flags, GLuint64 timeout);
|
|
|
|
void GetSyncParameter(JSContext*, WebGLSync* sync, GLenum pname, JS::MutableHandleValue retval);
|
2013-07-17 13:58:09 +00:00
|
|
|
|
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Transform Feedback - WebGL2ContextTransformFeedback.cpp
|
2014-11-03 05:35:04 +00:00
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
already_AddRefed<WebGLTransformFeedback> CreateTransformFeedback();
|
|
|
|
void DeleteTransformFeedback(WebGLTransformFeedback* tf);
|
|
|
|
bool IsTransformFeedback(WebGLTransformFeedback* tf);
|
2014-11-26 02:00:06 +00:00
|
|
|
void BindTransformFeedback(GLenum target, WebGLTransformFeedback* tf);
|
2014-09-17 22:08:41 +00:00
|
|
|
void BeginTransformFeedback(GLenum primitiveMode);
|
|
|
|
void EndTransformFeedback();
|
|
|
|
void PauseTransformFeedback();
|
|
|
|
void ResumeTransformFeedback();
|
2014-11-26 02:00:06 +00:00
|
|
|
void TransformFeedbackVaryings(WebGLProgram* program, const dom::Sequence<nsString>& varyings, GLenum bufferMode);
|
|
|
|
already_AddRefed<WebGLActiveInfo> GetTransformFeedbackVarying(WebGLProgram* program, GLuint index);
|
2014-09-17 22:08:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Uniform Buffer Objects and Transform Feedback Buffers - WebGL2ContextUniforms.cpp
|
|
|
|
// TODO(djg): Implemented in WebGLContext
|
|
|
|
/*
|
|
|
|
void BindBufferBase(GLenum target, GLuint index, WebGLBuffer* buffer);
|
|
|
|
void BindBufferRange(GLenum target, GLuint index, WebGLBuffer* buffer, GLintptr offset, GLsizeiptr size);
|
|
|
|
*/
|
2015-06-05 03:26:34 +00:00
|
|
|
virtual JS::Value GetParameter(JSContext* cx, GLenum pname, ErrorResult& rv) override;
|
2016-10-14 22:59:27 +00:00
|
|
|
void GetIndexedParameter(JSContext* cx, GLenum target, GLuint index,
|
|
|
|
JS::MutableHandleValue retval, ErrorResult& rv);
|
2014-12-16 05:20:15 +00:00
|
|
|
void GetUniformIndices(WebGLProgram* program,
|
|
|
|
const dom::Sequence<nsString>& uniformNames,
|
|
|
|
dom::Nullable< nsTArray<GLuint> >& retval);
|
2016-02-15 14:14:00 +00:00
|
|
|
void GetActiveUniforms(JSContext* cx,
|
|
|
|
WebGLProgram* program,
|
|
|
|
const dom::Sequence<GLuint>& uniformIndices,
|
|
|
|
GLenum pname,
|
|
|
|
JS::MutableHandleValue retval);
|
|
|
|
|
2014-09-17 22:08:41 +00:00
|
|
|
GLuint GetUniformBlockIndex(WebGLProgram* program, const nsAString& uniformBlockName);
|
2014-12-16 05:20:15 +00:00
|
|
|
void GetActiveUniformBlockParameter(JSContext*, WebGLProgram* program,
|
|
|
|
GLuint uniformBlockIndex, GLenum pname,
|
2016-10-14 22:59:27 +00:00
|
|
|
JS::MutableHandleValue retval,
|
2014-12-16 05:20:15 +00:00
|
|
|
ErrorResult& rv);
|
|
|
|
void GetActiveUniformBlockName(WebGLProgram* program, GLuint uniformBlockIndex,
|
|
|
|
nsAString& retval);
|
|
|
|
void UniformBlockBinding(WebGLProgram* program, GLuint uniformBlockIndex,
|
|
|
|
GLuint uniformBlockBinding);
|
2014-09-17 22:08:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
// Vertex Array Object - WebGL2ContextVAOs.cpp
|
|
|
|
// TODO(djg): Implemented in WebGLContext
|
|
|
|
/*
|
|
|
|
already_AddRefed<WebGLVertexArrayObject> CreateVertexArray();
|
|
|
|
void DeleteVertexArray(WebGLVertexArrayObject* vertexArray);
|
|
|
|
bool IsVertexArray(WebGLVertexArrayObject* vertexArray);
|
|
|
|
void BindVertexArray(WebGLVertexArrayObject* vertexArray);
|
|
|
|
*/
|
|
|
|
|
|
|
|
private:
|
|
|
|
WebGL2Context();
|
2015-11-25 04:15:29 +00:00
|
|
|
virtual UniquePtr<webgl::FormatUsageAuthority>
|
|
|
|
CreateFormatUsage(gl::GLContext* gl) const override;
|
2014-07-14 23:55:56 +00:00
|
|
|
|
2015-08-03 21:34:46 +00:00
|
|
|
virtual bool IsTexParamValid(GLenum pname) const override;
|
2014-06-24 00:56:21 +00:00
|
|
|
|
2015-04-17 01:17:07 +00:00
|
|
|
void UpdateBoundQuery(GLenum target, WebGLQuery* query);
|
|
|
|
|
2015-06-01 06:49:47 +00:00
|
|
|
// CreateVertexArrayImpl is assumed to be infallible.
|
|
|
|
virtual WebGLVertexArray* CreateVertexArrayImpl() override;
|
2016-07-22 06:25:41 +00:00
|
|
|
virtual bool ValidateAttribPointerType(bool integerMode, GLenum type,
|
|
|
|
uint32_t* alignment,
|
|
|
|
const char* info) override;
|
2015-04-17 01:17:07 +00:00
|
|
|
virtual bool ValidateQueryTarget(GLenum target, const char* info) override;
|
2015-03-23 01:29:32 +00:00
|
|
|
virtual bool ValidateUniformMatrixTranspose(bool transpose, const char* info) override;
|
2013-07-17 13:58:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace mozilla
|
|
|
|
|
|
|
|
#endif
|