diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index a8736e39280..4613110019a 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -1555,7 +1555,7 @@ impl WebGLImpl { WebGLCommand::TexImage2D { target, level, - effective_internal_format, + internal_format, size, format, data_type, @@ -1567,7 +1567,7 @@ impl WebGLImpl { ref data, } => { let pixels = prepare_pixels( - format, + internal_format, data_type, size, unpacking_alignment, @@ -1581,7 +1581,7 @@ impl WebGLImpl { gl.tex_image_2d( target, level as i32, - effective_internal_format as i32, + internal_format.as_gl_constant() as i32, size.width as i32, size.height as i32, 0, @@ -1666,6 +1666,23 @@ impl WebGLImpl { &*data, ); }, + WebGLCommand::TexStorage2D(target, levels, internal_format, width, height) => gl + .tex_storage_2d( + target, + levels as i32, + internal_format.as_gl_constant(), + width as i32, + height as i32, + ), + WebGLCommand::TexStorage3D(target, levels, internal_format, width, height, depth) => gl + .tex_storage_3d( + target, + levels as i32, + internal_format.as_gl_constant(), + width as i32, + height as i32, + depth as i32, + ), WebGLCommand::DrawingBufferWidth(ref sender) => { let size = device .context_surface_info(&ctx) diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index e19ed2263a8..3d9e4c46552 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -111,7 +111,7 @@ pub struct WebGLCreateContextResult { } /// Defines the WebGL version -#[derive(Clone, Copy, Debug, Deserialize, Eq, MallocSizeOf, PartialEq, Serialize)] +#[derive(Clone, Copy, Debug, Deserialize, Eq, MallocSizeOf, PartialEq, PartialOrd, Serialize)] pub enum WebGLVersion { /// https://www.khronos.org/registry/webgl/specs/1.0.2/ /// Conforms closely to the OpenGL ES 2.0 API @@ -384,8 +384,7 @@ pub enum WebGLCommand { TexImage2D { target: u32, level: u32, - // FIXME(nox): This should be computed on the WebGL thread. - effective_internal_format: u32, + internal_format: TexFormat, size: Size2D, format: TexFormat, data_type: TexDataType, @@ -453,6 +452,8 @@ pub enum WebGLCommand { GetInternalFormatIntVec(u32, u32, InternalFormatIntVec, WebGLSender>), TexParameteri(u32, u32, i32), TexParameterf(u32, u32, f32), + TexStorage2D(u32, u32, TexFormat, u32, u32), + TexStorage3D(u32, u32, TexFormat, u32, u32, u32), DrawArrays { mode: u32, first: i32, @@ -872,14 +873,36 @@ parameters! { TexParameter { Float(TexParameterFloat { TextureMaxAnisotropyExt = gl::TEXTURE_MAX_ANISOTROPY_EXT, + TextureMaxLod = gl::TEXTURE_MAX_LOD, + TextureMinLod = gl::TEXTURE_MIN_LOD, }), Int(TexParameterInt { TextureWrapS = gl::TEXTURE_WRAP_S, TextureWrapT = gl::TEXTURE_WRAP_T, + TextureWrapR = gl::TEXTURE_WRAP_R, + TextureBaseLevel = gl::TEXTURE_BASE_LEVEL, + TextureMinFilter = gl::TEXTURE_MIN_FILTER, + TextureMagFilter = gl::TEXTURE_MAG_FILTER, + TextureMaxLevel = gl::TEXTURE_MAX_LEVEL, + TextureCompareFunc = gl::TEXTURE_COMPARE_FUNC, + TextureCompareMode = gl::TEXTURE_COMPARE_MODE, + TextureImmutableFormat = gl::TEXTURE_IMMUTABLE_FORMAT, + TextureImmutableLevels = gl::TEXTURE_IMMUTABLE_LEVELS, }), } } +impl TexParameter { + pub fn required_webgl_version(self) -> WebGLVersion { + match self { + Self::Float(TexParameterFloat::TextureMaxAnisotropyExt) | + Self::Int(TexParameterInt::TextureWrapS) | + Self::Int(TexParameterInt::TextureWrapT) => WebGLVersion::WebGL1, + _ => WebGLVersion::WebGL2, + } + } +} + parameters! { InternalFormatParameter { IntVec(InternalFormatIntVec { @@ -936,9 +959,16 @@ mod gl_ext_constants { gl_enums! { pub enum TexFormat { DepthComponent = gl::DEPTH_COMPONENT, + DepthStencil = gl::DEPTH_STENCIL, Alpha = gl::ALPHA, + Red = gl::RED, + RedInteger = gl::RED_INTEGER, + RG = gl::RG, + RGInteger = gl::RG_INTEGER, RGB = gl::RGB, + RGBInteger = gl::RGB_INTEGER, RGBA = gl::RGBA, + RGBAInteger = gl::RGBA_INTEGER, Luminance = gl::LUMINANCE, LuminanceAlpha = gl::LUMINANCE_ALPHA, CompressedRgbS3tcDxt1 = gl_ext_constants::COMPRESSED_RGB_S3TC_DXT1_EXT, @@ -946,15 +976,79 @@ gl_enums! { CompressedRgbaS3tcDxt3 = gl_ext_constants::COMPRESSED_RGBA_S3TC_DXT3_EXT, CompressedRgbaS3tcDxt5 = gl_ext_constants::COMPRESSED_RGBA_S3TC_DXT5_EXT, CompressedRgbEtc1 = gl_ext_constants::COMPRESSED_RGB_ETC1_WEBGL, + R8 = gl::R8, + R8SNorm = gl::R8_SNORM, + R16f = gl::R16F, + R32f = gl::R32F, + R8ui = gl::R8UI, + R8i = gl::R8I, + R16ui = gl::R16UI, + R16i = gl::R16I, + R32ui = gl::R32UI, + R32i = gl::R32I, + RG8 = gl::RG8, + RG8SNorm = gl::RG8_SNORM, + RG16f = gl::RG16F, + RG32f = gl::RG32F, + RG8ui = gl::RG8UI, + RG8i = gl::RG8I, + RG16ui = gl::RG16UI, + RG16i = gl::RG16I, + RG32ui = gl::RG32UI, + RG32i = gl::RG32I, + RGB8 = gl::RGB8, + SRGB8 = gl::SRGB8, + RGB565 = gl::RGB565, + RGB8SNorm = gl::RGB8_SNORM, + R11fG11fB10f = gl::R11F_G11F_B10F, + RGB9E5 = gl::RGB9_E5, + RGB16f = gl::RGB16F, + RGB32f = gl::RGB32F, + RGB8ui = gl::RGB8UI, + RGB8i = gl::RGB8I, + RGB16ui = gl::RGB16UI, + RGB16i = gl::RGB16I, + RGB32ui = gl::RGB32UI, + RGB32i = gl::RGB32I, + RGBA8 = gl::RGBA8, + SRGB8Alpha8 = gl::SRGB8_ALPHA8, + RGBA8SNorm = gl::RGBA8_SNORM, + RGB5A1 = gl::RGB5_A1, + RGBA4 = gl::RGBA4, + RGB10A2 = gl::RGB10_A2, + RGBA16f = gl::RGBA16F, + RGBA32f = gl::RGBA32F, + RGBA8ui = gl::RGBA8UI, + RGBA8i = gl::RGBA8I, + RGB10A2ui = gl::RGB10_A2UI, + RGBA16ui = gl::RGBA16UI, + RGBA16i = gl::RGBA16I, + RGBA32i = gl::RGBA32I, + RGBA32ui = gl::RGBA32UI, + DepthComponent16 = gl::DEPTH_COMPONENT16, + DepthComponent24 = gl::DEPTH_COMPONENT24, + DepthComponent32f = gl::DEPTH_COMPONENT32F, + Depth24Stencil8 = gl::DEPTH24_STENCIL8, + Depth32fStencil8 = gl::DEPTH32F_STENCIL8, } pub enum TexDataType { + Byte = gl::BYTE, + Int = gl::INT, + Short = gl::SHORT, UnsignedByte = gl::UNSIGNED_BYTE, + UnsignedInt = gl::UNSIGNED_INT, + UnsignedInt10f11f11fRev = gl::UNSIGNED_INT_10F_11F_11F_REV, + UnsignedInt2101010Rev = gl::UNSIGNED_INT_2_10_10_10_REV, + UnsignedInt5999Rev = gl::UNSIGNED_INT_5_9_9_9_REV, + UnsignedInt248 = gl::UNSIGNED_INT_24_8, + UnsignedShort = gl::UNSIGNED_SHORT, UnsignedShort4444 = gl::UNSIGNED_SHORT_4_4_4_4, UnsignedShort5551 = gl::UNSIGNED_SHORT_5_5_5_1, UnsignedShort565 = gl::UNSIGNED_SHORT_5_6_5, Float = gl::FLOAT, HalfFloat = gl::HALF_FLOAT_OES, + Float32UnsignedInt248Rev = gl::FLOAT_32_UNSIGNED_INT_24_8_REV, } } @@ -962,13 +1056,12 @@ impl TexFormat { /// Returns how many components does this format need. For example, RGBA /// needs 4 components, while RGB requires 3. pub fn components(&self) -> u32 { - match *self { - TexFormat::DepthComponent => 1, - TexFormat::Alpha => 1, - TexFormat::Luminance => 1, + match self.to_unsized() { + TexFormat::DepthStencil => 2, TexFormat::LuminanceAlpha => 2, - TexFormat::RGB => 3, - TexFormat::RGBA => 4, + TexFormat::RG | TexFormat::RGInteger => 2, + TexFormat::RGB | TexFormat::RGBInteger => 3, + TexFormat::RGBA | TexFormat::RGBAInteger => 4, _ => 1, } } @@ -977,6 +1070,189 @@ impl TexFormat { pub fn is_compressed(&self) -> bool { gl_ext_constants::COMPRESSIONS.contains(&self.as_gl_constant()) } + + /// Returns whether this format is a known sized or unsized format. + pub fn is_sized(&self) -> bool { + match self { + TexFormat::DepthComponent | + TexFormat::DepthStencil | + TexFormat::Alpha | + TexFormat::Red | + TexFormat::RG | + TexFormat::RGB | + TexFormat::RGBA | + TexFormat::Luminance | + TexFormat::LuminanceAlpha => false, + _ => true, + } + } + + pub fn to_unsized(self) -> TexFormat { + match self { + TexFormat::R8 => TexFormat::Red, + TexFormat::R8SNorm => TexFormat::Red, + TexFormat::R16f => TexFormat::Red, + TexFormat::R32f => TexFormat::Red, + TexFormat::R8ui => TexFormat::RedInteger, + TexFormat::R8i => TexFormat::RedInteger, + TexFormat::R16ui => TexFormat::RedInteger, + TexFormat::R16i => TexFormat::RedInteger, + TexFormat::R32ui => TexFormat::RedInteger, + TexFormat::R32i => TexFormat::RedInteger, + TexFormat::RG8 => TexFormat::RG, + TexFormat::RG8SNorm => TexFormat::RG, + TexFormat::RG16f => TexFormat::RG, + TexFormat::RG32f => TexFormat::RG, + TexFormat::RG8ui => TexFormat::RGInteger, + TexFormat::RG8i => TexFormat::RGInteger, + TexFormat::RG16ui => TexFormat::RGInteger, + TexFormat::RG16i => TexFormat::RGInteger, + TexFormat::RG32ui => TexFormat::RGInteger, + TexFormat::RG32i => TexFormat::RGInteger, + TexFormat::RGB8 => TexFormat::RGB, + TexFormat::SRGB8 => TexFormat::RGB, + TexFormat::RGB565 => TexFormat::RGB, + TexFormat::RGB8SNorm => TexFormat::RGB, + TexFormat::R11fG11fB10f => TexFormat::RGB, + TexFormat::RGB9E5 => TexFormat::RGB, + TexFormat::RGB16f => TexFormat::RGB, + TexFormat::RGB32f => TexFormat::RGB, + TexFormat::RGB8ui => TexFormat::RGBInteger, + TexFormat::RGB8i => TexFormat::RGBInteger, + TexFormat::RGB16ui => TexFormat::RGBInteger, + TexFormat::RGB16i => TexFormat::RGBInteger, + TexFormat::RGB32ui => TexFormat::RGBInteger, + TexFormat::RGB32i => TexFormat::RGBInteger, + TexFormat::RGBA8 => TexFormat::RGBA, + TexFormat::SRGB8Alpha8 => TexFormat::RGBA, + TexFormat::RGBA8SNorm => TexFormat::RGBA, + TexFormat::RGB5A1 => TexFormat::RGBA, + TexFormat::RGBA4 => TexFormat::RGBA, + TexFormat::RGB10A2 => TexFormat::RGBA, + TexFormat::RGBA16f => TexFormat::RGBA, + TexFormat::RGBA32f => TexFormat::RGBA, + TexFormat::RGBA8ui => TexFormat::RGBAInteger, + TexFormat::RGBA8i => TexFormat::RGBAInteger, + TexFormat::RGB10A2ui => TexFormat::RGBAInteger, + TexFormat::RGBA16ui => TexFormat::RGBAInteger, + TexFormat::RGBA16i => TexFormat::RGBAInteger, + TexFormat::RGBA32i => TexFormat::RGBAInteger, + TexFormat::RGBA32ui => TexFormat::RGBAInteger, + TexFormat::DepthComponent16 => TexFormat::DepthComponent, + TexFormat::DepthComponent24 => TexFormat::DepthComponent, + TexFormat::DepthComponent32f => TexFormat::DepthComponent, + TexFormat::Depth24Stencil8 => TexFormat::DepthStencil, + TexFormat::Depth32fStencil8 => TexFormat::DepthStencil, + _ => self, + } + } + + pub fn compatible_data_types(self) -> &'static [TexDataType] { + match self { + TexFormat::RGB => &[TexDataType::UnsignedByte, TexDataType::UnsignedShort565][..], + TexFormat::RGBA => &[ + TexDataType::UnsignedByte, + TexDataType::UnsignedShort4444, + TexDataType::UnsignedShort5551, + ][..], + TexFormat::LuminanceAlpha => &[TexDataType::UnsignedByte][..], + TexFormat::Luminance => &[TexDataType::UnsignedByte][..], + TexFormat::Alpha => &[TexDataType::UnsignedByte][..], + TexFormat::R8 => &[TexDataType::UnsignedByte][..], + TexFormat::R8SNorm => &[TexDataType::Byte][..], + TexFormat::R16f => &[TexDataType::HalfFloat, TexDataType::Float][..], + TexFormat::R32f => &[TexDataType::Float][..], + TexFormat::R8ui => &[TexDataType::UnsignedByte][..], + TexFormat::R8i => &[TexDataType::Byte][..], + TexFormat::R16ui => &[TexDataType::UnsignedShort][..], + TexFormat::R16i => &[TexDataType::Short][..], + TexFormat::R32ui => &[TexDataType::UnsignedInt][..], + TexFormat::R32i => &[TexDataType::Int][..], + TexFormat::RG8 => &[TexDataType::UnsignedByte][..], + TexFormat::RG8SNorm => &[TexDataType::Byte][..], + TexFormat::RG16f => &[TexDataType::HalfFloat, TexDataType::Float][..], + TexFormat::RG32f => &[TexDataType::Float][..], + TexFormat::RG8ui => &[TexDataType::UnsignedByte][..], + TexFormat::RG8i => &[TexDataType::Byte][..], + TexFormat::RG16ui => &[TexDataType::UnsignedShort][..], + TexFormat::RG16i => &[TexDataType::Short][..], + TexFormat::RG32ui => &[TexDataType::UnsignedInt][..], + TexFormat::RG32i => &[TexDataType::Int][..], + TexFormat::RGB8 => &[TexDataType::UnsignedByte][..], + TexFormat::SRGB8 => &[TexDataType::UnsignedByte][..], + TexFormat::RGB565 => &[TexDataType::UnsignedByte, TexDataType::UnsignedShort565][..], + TexFormat::RGB8SNorm => &[TexDataType::Byte][..], + TexFormat::R11fG11fB10f => &[ + TexDataType::UnsignedInt10f11f11fRev, + TexDataType::HalfFloat, + TexDataType::Float, + ][..], + TexFormat::RGB9E5 => &[ + TexDataType::UnsignedInt5999Rev, + TexDataType::HalfFloat, + TexDataType::Float, + ][..], + TexFormat::RGB16f => &[TexDataType::HalfFloat, TexDataType::Float][..], + TexFormat::RGB32f => &[TexDataType::Float][..], + TexFormat::RGB8ui => &[TexDataType::UnsignedByte][..], + TexFormat::RGB8i => &[TexDataType::Byte][..], + TexFormat::RGB16ui => &[TexDataType::UnsignedShort][..], + TexFormat::RGB16i => &[TexDataType::Short][..], + TexFormat::RGB32ui => &[TexDataType::UnsignedInt][..], + TexFormat::RGB32i => &[TexDataType::Int][..], + TexFormat::RGBA8 => &[TexDataType::UnsignedByte][..], + TexFormat::SRGB8Alpha8 => &[TexDataType::UnsignedByte][..], + TexFormat::RGBA8SNorm => &[TexDataType::Byte][..], + TexFormat::RGB5A1 => &[ + TexDataType::UnsignedByte, + TexDataType::UnsignedShort5551, + TexDataType::UnsignedInt2101010Rev, + ][..], + TexFormat::RGBA4 => &[TexDataType::UnsignedByte, TexDataType::UnsignedShort4444][..], + TexFormat::RGB10A2 => &[TexDataType::UnsignedInt2101010Rev][..], + TexFormat::RGBA16f => &[TexDataType::HalfFloat, TexDataType::Float][..], + TexFormat::RGBA32f => &[TexDataType::Float][..], + TexFormat::RGBA8ui => &[TexDataType::UnsignedByte][..], + TexFormat::RGBA8i => &[TexDataType::Byte][..], + TexFormat::RGB10A2ui => &[TexDataType::UnsignedInt2101010Rev][..], + TexFormat::RGBA16ui => &[TexDataType::UnsignedShort][..], + TexFormat::RGBA16i => &[TexDataType::Short][..], + TexFormat::RGBA32i => &[TexDataType::Int][..], + TexFormat::RGBA32ui => &[TexDataType::UnsignedInt][..], + TexFormat::DepthComponent16 => { + &[TexDataType::UnsignedShort, TexDataType::UnsignedInt][..] + }, + TexFormat::DepthComponent24 => &[TexDataType::UnsignedInt][..], + TexFormat::DepthComponent32f => &[TexDataType::Float][..], + TexFormat::Depth24Stencil8 => &[TexDataType::UnsignedInt248][..], + TexFormat::Depth32fStencil8 => &[TexDataType::Float32UnsignedInt248Rev][..], + TexFormat::CompressedRgbS3tcDxt1 | + TexFormat::CompressedRgbaS3tcDxt1 | + TexFormat::CompressedRgbaS3tcDxt3 | + TexFormat::CompressedRgbaS3tcDxt5 => &[TexDataType::UnsignedByte][..], + _ => &[][..], + } + } + + pub fn required_webgl_version(self) -> WebGLVersion { + match self { + TexFormat::DepthComponent | + TexFormat::Alpha | + TexFormat::RGB | + TexFormat::RGBA | + TexFormat::Luminance | + TexFormat::LuminanceAlpha | + TexFormat::CompressedRgbS3tcDxt1 | + TexFormat::CompressedRgbaS3tcDxt1 | + TexFormat::CompressedRgbaS3tcDxt3 | + TexFormat::CompressedRgbaS3tcDxt5 => WebGLVersion::WebGL1, + _ => WebGLVersion::WebGL2, + } + } + + pub fn usable_as_internal(self) -> bool { + !self.compatible_data_types().is_empty() + } } impl TexDataType { @@ -984,12 +1260,21 @@ impl TexDataType { pub fn element_size(&self) -> u32 { use self::*; match *self { - TexDataType::UnsignedByte => 1, + TexDataType::Byte | TexDataType::UnsignedByte => 1, + TexDataType::Short | + TexDataType::UnsignedShort | TexDataType::UnsignedShort4444 | TexDataType::UnsignedShort5551 | TexDataType::UnsignedShort565 => 2, + TexDataType::Int | + TexDataType::UnsignedInt | + TexDataType::UnsignedInt10f11f11fRev | + TexDataType::UnsignedInt2101010Rev | + TexDataType::UnsignedInt5999Rev => 4, + TexDataType::UnsignedInt248 => 4, TexDataType::Float => 4, TexDataType::HalfFloat => 2, + TexDataType::Float32UnsignedInt248Rev => 4, } } @@ -997,12 +1282,34 @@ impl TexDataType { /// UnsignedShort4444 holds four components, each with 4 bits of data. pub fn components_per_element(&self) -> u32 { match *self { + TexDataType::Byte => 1, TexDataType::UnsignedByte => 1, + TexDataType::Short => 1, + TexDataType::UnsignedShort => 1, TexDataType::UnsignedShort565 => 3, TexDataType::UnsignedShort5551 => 4, TexDataType::UnsignedShort4444 => 4, + TexDataType::Int => 1, + TexDataType::UnsignedInt => 1, + TexDataType::UnsignedInt10f11f11fRev => 3, + TexDataType::UnsignedInt2101010Rev => 4, + TexDataType::UnsignedInt5999Rev => 4, + TexDataType::UnsignedInt248 => 2, TexDataType::Float => 1, TexDataType::HalfFloat => 1, + TexDataType::Float32UnsignedInt248Rev => 2, + } + } + + pub fn required_webgl_version(self) -> WebGLVersion { + match self { + TexDataType::UnsignedByte | + TexDataType::UnsignedShort4444 | + TexDataType::UnsignedShort5551 | + TexDataType::UnsignedShort565 | + TexDataType::Float | + TexDataType::HalfFloat => WebGLVersion::WebGL1, + _ => WebGLVersion::WebGL2, } } } diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs index 6ed42deea01..037457960fe 100644 --- a/components/script/dom/webgl2renderingcontext.rs +++ b/components/script/dom/webgl2renderingcontext.rs @@ -18,6 +18,8 @@ use crate::dom::bindings::root::{Dom, DomRoot, LayoutDom, MutNullableDom}; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::dom::htmlcanvaselement::HTMLCanvasElement; +use crate::dom::webgl_validations::tex_image_2d::{TexStorageValidator, TexStorageValidatorResult}; +use crate::dom::webgl_validations::WebGLValidator; use crate::dom::webglactiveinfo::WebGLActiveInfo; use crate::dom::webglbuffer::WebGLBuffer; use crate::dom::webglframebuffer::{WebGLFramebuffer, WebGLFramebufferAttachmentRoot}; @@ -838,6 +840,55 @@ impl WebGL2RenderingContext { self.base .send_command(WebGLCommand::VertexAttribU(index, x, y, z, w)); } + + fn tex_storage( + &self, + dimensions: u8, + target: u32, + levels: i32, + internal_format: u32, + width: i32, + height: i32, + depth: i32, + ) { + let expected_dimensions = match target { + constants::TEXTURE_2D | constants::TEXTURE_CUBE_MAP => 2, + constants::TEXTURE_3D | constants::TEXTURE_2D_ARRAY => 3, + _ => return self.base.webgl_error(InvalidEnum), + }; + if dimensions != expected_dimensions { + return self.base.webgl_error(InvalidEnum); + } + + let validator = TexStorageValidator::new( + &self.base, + dimensions, + target, + levels, + internal_format, + width, + height, + depth, + ); + let TexStorageValidatorResult { + texture, + target, + levels, + internal_format, + width, + height, + depth, + } = match validator.validate() { + Ok(result) => result, + Err(_) => return, // NB: The validator sets the correct error for us. + }; + + handle_potential_webgl_error!( + self.base, + texture.storage(target, levels, internal_format, width, height, depth), + return + ); + } } impl WebGL2RenderingContextMethods for WebGL2RenderingContext { @@ -4138,6 +4189,31 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext { self.base.send_command(WebGLCommand::DrawBuffers(buffers)); } } + + /// https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.6 + fn TexStorage2D( + &self, + target: u32, + levels: i32, + internal_format: u32, + width: i32, + height: i32, + ) { + self.tex_storage(2, target, levels, internal_format, width, height, 1) + } + + /// https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.6 + fn TexStorage3D( + &self, + target: u32, + levels: i32, + internal_format: u32, + width: i32, + height: i32, + depth: i32, + ) { + self.tex_storage(3, target, levels, internal_format, width, height, depth) + } } impl LayoutCanvasWebGLRenderingContextHelpers for LayoutDom<'_, WebGL2RenderingContext> { diff --git a/components/script/dom/webgl_validations/tex_image_2d.rs b/components/script/dom/webgl_validations/tex_image_2d.rs index 54643e7a2da..e162081f637 100644 --- a/components/script/dom/webgl_validations/tex_image_2d.rs +++ b/components/script/dom/webgl_validations/tex_image_2d.rs @@ -9,7 +9,7 @@ use crate::dom::webglrenderingcontext::WebGLRenderingContext; use crate::dom::webgltexture::{ImageInfo, WebGLTexture}; use crate::dom::webgltexture::{TexCompression, TexCompressionValidation}; use canvas_traits::webgl::{TexDataType, TexFormat, WebGLError::*}; -use std::{self, fmt}; +use std::{self, cmp, fmt}; /// The errors that the texImage* family of functions can generate. #[derive(Debug)] @@ -24,6 +24,10 @@ pub enum TexImageValidationError { NegativeLevel, /// A level too high to be allowed by the implementation was passed. LevelTooHigh, + /// A level less than an allowed minimal value was passed. + LevelTooLow, + /// A depth less than an allowed minimal value was passed. + DepthTooLow, /// A negative width and height was passed. NegativeDimension, /// A bigger with and height were passed than what the implementation @@ -60,6 +64,8 @@ impl fmt::Display for TexImageValidationError { }, NegativeLevel => "A negative level was passed", LevelTooHigh => "Level too high", + LevelTooLow => "Level too low", + DepthTooLow => "Depth too low", NegativeDimension => "Negative dimensions were passed", TextureTooBig => "Dimensions given are too big", InvalidDataType => "Invalid data type", @@ -108,8 +114,8 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> { // GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, // GL_TEXTURE_CUBE_MAP_POSITIVE_Z, or GL_TEXTURE_CUBE_MAP_NEGATIVE_Z. let target = match TexImageTarget::from_gl_constant(self.target) { - Some(target) => target, - None => { + Some(target) if target.dimensions() == 2 => target, + _ => { self.context.webgl_error(InvalidEnum); return Err(TexImageValidationError::InvalidTextureTarget(self.target)); }, @@ -140,8 +146,13 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> { // GL_INVALID_ENUM is generated if internal_format is not an accepted // format. let internal_format = match TexFormat::from_gl_constant(self.internal_format) { - Some(format) => format, - None => { + Some(format) + if format.required_webgl_version() <= self.context.webgl_version() && + format.usable_as_internal() => + { + format + }, + _ => { self.context.webgl_error(InvalidEnum); return Err(TexImageValidationError::InvalidTextureFormat); }, @@ -278,6 +289,7 @@ pub struct TexImage2DValidatorResult { pub border: u32, pub texture: DomRoot, pub target: TexImageTarget, + pub internal_format: TexFormat, pub format: TexFormat, pub data_type: TexDataType, } @@ -303,16 +315,18 @@ impl<'a> WebGLValidator for TexImage2DValidator<'a> { // GL_INVALID_ENUM is generated if format or data_type is not an // accepted value. let data_type = match TexDataType::from_gl_constant(self.data_type) { - Some(data_type) => data_type, - None => { + Some(data_type) if data_type.required_webgl_version() <= context.webgl_version() => { + data_type + }, + _ => { context.webgl_error(InvalidEnum); return Err(TexImageValidationError::InvalidDataType); }, }; let format = match TexFormat::from_gl_constant(self.format) { - Some(format) => format, - None => { + Some(format) if format.required_webgl_version() <= context.webgl_version() => format, + _ => { context.webgl_error(InvalidEnum); return Err(TexImageValidationError::InvalidTextureFormat); }, @@ -320,11 +334,16 @@ impl<'a> WebGLValidator for TexImage2DValidator<'a> { // GL_INVALID_OPERATION is generated if format does not match // internal_format. - if format != internal_format { + if format != internal_format.to_unsized() { context.webgl_error(InvalidOperation); return Err(TexImageValidationError::TextureFormatMismatch); } + // NOTE: In WebGL2 data type check should be done based on the internal + // format, but in some functions this validator is called with the + // regular unsized format as parameter (eg. TexSubImage2D). For now + // it's left here to avoid duplication. + // // GL_INVALID_OPERATION is generated if type is // GL_UNSIGNED_SHORT_4_4_4_4 or GL_UNSIGNED_SHORT_5_5_5_1 and format is // not GL_RGBA. @@ -352,6 +371,7 @@ impl<'a> WebGLValidator for TexImage2DValidator<'a> { border: border, texture: texture, target: target, + internal_format: internal_format, format: format, data_type: data_type, }) @@ -657,3 +677,113 @@ impl<'a> WebGLValidator for CompressedTexSubImage2DValidator<'a> { }) } } + +pub struct TexStorageValidator<'a> { + common_validator: CommonTexImage2DValidator<'a>, + dimensions: u8, + depth: i32, +} + +pub struct TexStorageValidatorResult { + pub texture: DomRoot, + pub target: TexImageTarget, + pub levels: u32, + pub internal_format: TexFormat, + pub width: u32, + pub height: u32, + pub depth: u32, +} + +impl<'a> TexStorageValidator<'a> { + pub fn new( + context: &'a WebGLRenderingContext, + dimensions: u8, + target: u32, + levels: i32, + internal_format: u32, + width: i32, + height: i32, + depth: i32, + ) -> Self { + TexStorageValidator { + common_validator: CommonTexImage2DValidator::new( + context, + target, + levels, + internal_format, + width, + height, + 0, + ), + dimensions, + depth, + } + } +} + +impl<'a> WebGLValidator for TexStorageValidator<'a> { + type Error = TexImageValidationError; + type ValidatedOutput = TexStorageValidatorResult; + + fn validate(self) -> Result { + let context = self.common_validator.context; + let CommonTexImage2DValidatorResult { + texture, + target, + level, + internal_format, + width, + height, + border: _, + } = self.common_validator.validate()?; + + if self.depth < 1 { + context.webgl_error(InvalidValue); + return Err(TexImageValidationError::DepthTooLow); + } + if level < 1 { + context.webgl_error(InvalidValue); + return Err(TexImageValidationError::LevelTooLow); + } + + let dimensions_valid = match target { + TexImageTarget::Texture2D | TexImageTarget::CubeMap => self.dimensions == 2, + TexImageTarget::Texture3D | TexImageTarget::Texture2DArray => self.dimensions == 3, + _ => false, + }; + if !dimensions_valid { + context.webgl_error(InvalidEnum); + return Err(TexImageValidationError::InvalidTextureTarget( + target.as_gl_constant(), + )); + } + + if !internal_format.is_sized() { + context.webgl_error(InvalidEnum); + return Err(TexImageValidationError::InvalidTextureFormat); + } + + let max_level = log2(cmp::max(width, height) as u32) + 1; + if level > max_level { + context.webgl_error(InvalidOperation); + return Err(TexImageValidationError::LevelTooHigh); + } + + if texture.target().is_none() { + context.webgl_error(InvalidOperation); + return Err(TexImageValidationError::TextureTargetNotBound( + target.as_gl_constant(), + )); + } + + Ok(TexStorageValidatorResult { + texture, + target, + levels: level, + internal_format, + width, + height, + depth: self.depth as u32, + }) + } +} diff --git a/components/script/dom/webgl_validations/types.rs b/components/script/dom/webgl_validations/types.rs index 597e924724a..e7d87202e3a 100644 --- a/components/script/dom/webgl_validations/types.rs +++ b/components/script/dom/webgl_validations/types.rs @@ -2,18 +2,21 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants; +use crate::dom::bindings::codegen::Bindings::WebGL2RenderingContextBinding::WebGL2RenderingContextConstants as constants; use canvas_traits::gl_enums; gl_enums! { pub enum TexImageTarget { - Texture2D = WebGLRenderingContextConstants::TEXTURE_2D, - CubeMapPositiveX = WebGLRenderingContextConstants::TEXTURE_CUBE_MAP_POSITIVE_X, - CubeMapNegativeX = WebGLRenderingContextConstants::TEXTURE_CUBE_MAP_NEGATIVE_X, - CubeMapPositiveY = WebGLRenderingContextConstants::TEXTURE_CUBE_MAP_POSITIVE_Y, - CubeMapNegativeY = WebGLRenderingContextConstants::TEXTURE_CUBE_MAP_NEGATIVE_Y, - CubeMapPositiveZ = WebGLRenderingContextConstants::TEXTURE_CUBE_MAP_POSITIVE_Z, - CubeMapNegativeZ = WebGLRenderingContextConstants::TEXTURE_CUBE_MAP_NEGATIVE_Z, + Texture2D = constants::TEXTURE_2D, + Texture2DArray = constants::TEXTURE_2D_ARRAY, + Texture3D = constants::TEXTURE_3D, + CubeMap = constants::TEXTURE_CUBE_MAP, + CubeMapPositiveX = constants::TEXTURE_CUBE_MAP_POSITIVE_X, + CubeMapNegativeX = constants::TEXTURE_CUBE_MAP_NEGATIVE_X, + CubeMapPositiveY = constants::TEXTURE_CUBE_MAP_POSITIVE_Y, + CubeMapNegativeY = constants::TEXTURE_CUBE_MAP_NEGATIVE_Y, + CubeMapPositiveZ = constants::TEXTURE_CUBE_MAP_POSITIVE_Z, + CubeMapNegativeZ = constants::TEXTURE_CUBE_MAP_NEGATIVE_Z, } } @@ -24,4 +27,11 @@ impl TexImageTarget { _ => true, } } + + pub fn dimensions(self) -> u8 { + match self { + TexImageTarget::Texture3D | TexImageTarget::Texture2DArray => 3, + _ => 2, + } + } } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index e616410b31d..1e2389641de 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -6,6 +6,7 @@ use crate::dom::bindings::cell::{DomRefCell, Ref, RefMut}; use crate::dom::bindings::codegen::Bindings::ANGLEInstancedArraysBinding::ANGLEInstancedArraysConstants; use crate::dom::bindings::codegen::Bindings::EXTBlendMinmaxBinding::EXTBlendMinmaxConstants; use crate::dom::bindings::codegen::Bindings::OESVertexArrayObjectBinding::OESVertexArrayObjectConstants; +use crate::dom::bindings::codegen::Bindings::WebGL2RenderingContextBinding::WebGL2RenderingContextConstants; use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::TexImageSource; use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLContextAttributes; use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; @@ -353,7 +354,7 @@ impl WebGLRenderingContext { // Send a command to re-bind the TEXTURE_2D, if any. if let Some(texture) = self .textures - .active_texture_slot(constants::TEXTURE_2D) + .active_texture_slot(constants::TEXTURE_2D, self.webgl_version()) .unwrap() .get() { @@ -477,8 +478,12 @@ impl WebGLRenderingContext { } fn tex_parameter(&self, target: u32, param: u32, value: TexParameterValue) { - let texture_slot = - handle_potential_webgl_error!(self, self.textures.active_texture_slot(target), return); + let texture_slot = handle_potential_webgl_error!( + self, + self.textures + .active_texture_slot(target, self.webgl_version()), + return + ); let texture = handle_potential_webgl_error!(self, texture_slot.get().ok_or(InvalidOperation), return); @@ -567,7 +572,7 @@ impl WebGLRenderingContext { texture: &WebGLTexture, target: TexImageTarget, level: u32, - format: TexFormat, + internal_format: TexFormat, size: Size2D, data_type: TexDataType, ) -> bool { @@ -595,7 +600,8 @@ impl WebGLRenderingContext { texture, target, data_type, - format, + internal_format, + internal_format.to_unsized(), level, 0, 1, @@ -707,12 +713,16 @@ impl WebGLRenderingContext { // or UNSIGNED_SHORT_5_5_5_1, a Uint16Array must be supplied. // or FLOAT, a Float32Array must be supplied. // If the types do not match, an INVALID_OPERATION error is generated. + let is_webgl2 = self.webgl_version() == WebGLVersion::WebGL2; let received_size = match *data { None => element_size, Some(ref buffer) => match buffer.get_array_type() { Type::Uint8 => 1, Type::Uint16 => 2, Type::Float32 => 4, + Type::Int8 if is_webgl2 => 1, + Type::Int16 if is_webgl2 => 2, + Type::Int32 | Type::Uint32 if is_webgl2 => 4, _ => { self.webgl_error(InvalidOperation); return Err(()); @@ -744,6 +754,7 @@ impl WebGLRenderingContext { texture: &WebGLTexture, target: TexImageTarget, data_type: TexDataType, + internal_format: TexFormat, format: TexFormat, level: u32, _border: u32, @@ -779,9 +790,6 @@ impl WebGLRenderingContext { YAxisTreatment::AsIs }; - let effective_internal_format = self - .extension_manager - .get_effective_tex_internal_format(format.as_gl_constant(), data_type.as_gl_constant()); let effective_data_type = self .extension_manager .effective_type(data_type.as_gl_constant()); @@ -790,7 +798,7 @@ impl WebGLRenderingContext { self.send_command(WebGLCommand::TexImage2D { target: target.as_gl_constant(), level, - effective_internal_format, + internal_format, size: pixels.size, format, data_type, @@ -837,11 +845,19 @@ impl WebGLRenderingContext { return self.webgl_error(InvalidValue); } - // NB: format and internal_format must match. - if format != image_info.internal_format() || data_type != image_info.data_type().unwrap() { + // The unsized format must be compatible with the sized internal format + debug_assert!(!format.is_sized()); + if format != image_info.internal_format().to_unsized() { return self.webgl_error(InvalidOperation); } + // See https://www.khronos.org/registry/webgl/specs/latest/2.0/#4.1.6 + if self.webgl_version() == WebGLVersion::WebGL1 { + if data_type != image_info.data_type().unwrap() { + return self.webgl_error(InvalidOperation); + } + } + let settings = self.texture_unpacking_settings.get(); let dest_premultiplied = settings.contains(TextureUnpacking::PREMULTIPLY_ALPHA); @@ -1572,6 +1588,10 @@ impl WebGLRenderingContext { Err(_) => return, }; + if texture.is_immutable() { + return self.webgl_error(InvalidOperation); + } + let size = Size2D::new(width, height); let buff = IpcSharedMemory::from_bytes(data); let pixels = TexPixels::from_array(buff, size); @@ -1987,7 +2007,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { constants::TEXTURE_BINDING_2D => unsafe { let texture = self .textures - .active_texture_slot(constants::TEXTURE_2D) + .active_texture_slot(constants::TEXTURE_2D, self.webgl_version()) .unwrap() .get(); return optional_root_object_to_js_or_null!(*cx, texture); @@ -1995,7 +2015,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { constants::TEXTURE_BINDING_CUBE_MAP => unsafe { let texture = self .textures - .active_texture_slot(constants::TEXTURE_CUBE_MAP) + .active_texture_slot(constants::TEXTURE_CUBE_MAP, self.webgl_version()) .unwrap() .get(); return optional_root_object_to_js_or_null!(*cx, texture); @@ -2182,7 +2202,8 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { fn GetTexParameter(&self, _cx: SafeJSContext, target: u32, pname: u32) -> JSVal { let texture_slot = handle_potential_webgl_error!( self, - self.textures.active_texture_slot(target), + self.textures + .active_texture_slot(target, self.webgl_version()), return NullValue() ); let texture = handle_potential_webgl_error!( @@ -2205,8 +2226,13 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { _ => {}, } - match handle_potential_webgl_error!(self, TexParameter::from_u32(pname), return NullValue()) - { + let texparam = + handle_potential_webgl_error!(self, TexParameter::from_u32(pname), return NullValue()); + if self.webgl_version() < texparam.required_webgl_version() { + self.webgl_error(InvalidEnum); + return NullValue(); + } + match texparam { TexParameter::Float(param) => { let (sender, receiver) = webgl_channel().unwrap(); self.send_command(WebGLCommand::GetTexParameterFloat(target, param, sender)); @@ -2431,8 +2457,12 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { handle_potential_webgl_error!(self, self.validate_ownership(texture), return); } - let texture_slot = - handle_potential_webgl_error!(self, self.textures.active_texture_slot(target), return); + let texture_slot = handle_potential_webgl_error!( + self, + self.textures + .active_texture_slot(target, self.webgl_version()), + return + ); if let Some(texture) = texture { handle_potential_webgl_error!(self, texture.bind(target), return); @@ -2444,8 +2474,12 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8 fn GenerateMipmap(&self, target: u32) { - let texture_slot = - handle_potential_webgl_error!(self, self.textures.active_texture_slot(target), return); + let texture_slot = handle_potential_webgl_error!( + self, + self.textures + .active_texture_slot(target, self.webgl_version()), + return + ); let texture = handle_potential_webgl_error!(self, texture_slot.get().ok_or(InvalidOperation), return); handle_potential_webgl_error!(self, texture.generate_mipmap()); @@ -2543,6 +2577,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Err(_) => return, }; + if texture.is_immutable() { + return self.webgl_error(InvalidOperation); + } + let framebuffer_format = match self.bound_draw_framebuffer.get() { Some(fb) => match fb.attachment(constants::COLOR_ATTACHMENT0) { Some(WebGLFramebufferAttachmentRoot::Renderbuffer(rb)) => { @@ -4203,6 +4241,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { height, level, border, + internal_format, format, data_type, } = match validator.validate() { @@ -4210,6 +4249,13 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Err(_) => return Ok(()), // NB: The validator sets the correct error for us. }; + if !internal_format.compatible_data_types().contains(&data_type) { + return Ok(self.webgl_error(InvalidOperation)); + } + if texture.is_immutable() { + return Ok(self.webgl_error(InvalidOperation)); + } + let unpacking_alignment = self.texture_unpacking_alignment.get(); let expected_byte_length = match { @@ -4245,7 +4291,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { let size = Size2D::new(width, height); - if !self.validate_filterable_texture(&texture, target, level, format, size, data_type) { + if !self.validate_filterable_texture( + &texture, + target, + level, + internal_format, + size, + data_type, + ) { // FIXME(nox): What is the spec for this? No error is emitted ever // by validate_filterable_texture. return Ok(()); @@ -4255,6 +4308,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { &texture, target, data_type, + internal_format, format, level, border, @@ -4301,6 +4355,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { target, level, border, + internal_format, format, data_type, .. @@ -4309,11 +4364,18 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Err(_) => return Ok(()), // NB: The validator sets the correct error for us. }; + if !internal_format.compatible_data_types().contains(&data_type) { + return Ok(self.webgl_error(InvalidOperation)); + } + if texture.is_immutable() { + return Ok(self.webgl_error(InvalidOperation)); + } + if !self.validate_filterable_texture( &texture, target, level, - format, + internal_format, pixels.size, data_type, ) { @@ -4323,7 +4385,15 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } self.tex_image_2d( - &texture, target, data_type, format, level, border, 1, pixels, + &texture, + target, + data_type, + internal_format, + format, + level, + border, + 1, + pixels, ); Ok(()) } @@ -4354,7 +4424,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { let texture = handle_potential_webgl_error!( self, self.textures - .active_texture_slot(constants::TEXTURE_2D) + .active_texture_slot(constants::TEXTURE_2D, self.webgl_version()) .unwrap() .get() .ok_or(InvalidOperation), @@ -4721,11 +4791,20 @@ impl Textures { Ok(()) } - fn active_texture_slot(&self, target: u32) -> WebGLResult<&MutNullableDom> { + pub fn active_texture_slot( + &self, + target: u32, + webgl_version: WebGLVersion, + ) -> WebGLResult<&MutNullableDom> { let active_unit = self.active_unit(); + let is_webgl2 = webgl_version == WebGLVersion::WebGL2; match target { constants::TEXTURE_2D => Ok(&active_unit.tex_2d), constants::TEXTURE_CUBE_MAP => Ok(&active_unit.tex_cube_map), + WebGL2RenderingContextConstants::TEXTURE_2D_ARRAY if is_webgl2 => { + Ok(&active_unit.tex_2d_array) + }, + WebGL2RenderingContextConstants::TEXTURE_3D if is_webgl2 => Ok(&active_unit.tex_3d), _ => Err(InvalidEnum), } } @@ -4737,6 +4816,9 @@ impl Textures { let active_unit = self.active_unit(); match target { TexImageTarget::Texture2D => active_unit.tex_2d.get(), + TexImageTarget::Texture2DArray => active_unit.tex_2d_array.get(), + TexImageTarget::Texture3D => active_unit.tex_3d.get(), + TexImageTarget::CubeMap | TexImageTarget::CubeMapPositiveX | TexImageTarget::CubeMapNegativeX | TexImageTarget::CubeMapPositiveY | @@ -4763,6 +4845,8 @@ impl Textures { struct TextureUnit { tex_2d: MutNullableDom, tex_cube_map: MutNullableDom, + tex_2d_array: MutNullableDom, + tex_3d: MutNullableDom, } impl TextureUnit { @@ -4770,6 +4854,11 @@ impl TextureUnit { let fields = [ (&self.tex_2d, constants::TEXTURE_2D), (&self.tex_cube_map, constants::TEXTURE_CUBE_MAP), + ( + &self.tex_2d_array, + WebGL2RenderingContextConstants::TEXTURE_2D_ARRAY, + ), + (&self.tex_3d, WebGL2RenderingContextConstants::TEXTURE_3D), ]; for &(slot, target) in &fields { if slot.get().map_or(false, |t| texture == &*t) { diff --git a/components/script/dom/webgltexture.rs b/components/script/dom/webgltexture.rs index 3059dc7bf4e..a9c37110c2e 100644 --- a/components/script/dom/webgltexture.rs +++ b/components/script/dom/webgltexture.rs @@ -6,7 +6,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::EXTTextureFilterAnisotropicBinding::EXTTextureFilterAnisotropicConstants; -use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; +use crate::dom::bindings::codegen::Bindings::WebGL2RenderingContextBinding::WebGL2RenderingContextConstants as constants; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; @@ -37,6 +37,7 @@ pub struct WebGLTexture { /// The target to which this texture was bound the first time target: Cell>, is_deleted: Cell, + is_immutable: Cell, /// Stores information about mipmap levels and cubemap faces. #[ignore_malloc_size_of = "Arrays are cumbersome"] image_info_array: DomRefCell<[Option; MAX_LEVEL_COUNT * MAX_FACE_COUNT]>, @@ -59,6 +60,7 @@ impl WebGLTexture { id: id, target: Cell::new(None), is_deleted: Cell::new(false), + is_immutable: Cell::new(false), face_count: Cell::new(0), base_mipmap_level: 0, min_filter: Cell::new(constants::NEAREST_MIPMAP_LINEAR), @@ -221,6 +223,10 @@ impl WebGLTexture { self.is_deleted.get() } + pub fn is_immutable(&self) -> bool { + self.is_immutable.get() + } + pub fn target(&self) -> Option { self.target.get() } @@ -366,13 +372,13 @@ impl WebGLTexture { fn face_index_for_target(&self, target: &TexImageTarget) -> u8 { match *target { - TexImageTarget::Texture2D => 0, TexImageTarget::CubeMapPositiveX => 0, TexImageTarget::CubeMapNegativeX => 1, TexImageTarget::CubeMapPositiveY => 2, TexImageTarget::CubeMapNegativeY => 3, TexImageTarget::CubeMapPositiveZ => 4, TexImageTarget::CubeMapNegativeZ => 5, + _ => 0, } } @@ -415,6 +421,58 @@ impl WebGLTexture { pub fn detach_from_framebuffer(&self) { self.attached_framebuffer.set(None); } + + pub fn storage( + &self, + target: TexImageTarget, + levels: u32, + internal_format: TexFormat, + width: u32, + height: u32, + depth: u32, + ) -> WebGLResult<()> { + // Handled by the caller + assert!(!self.is_immutable()); + assert!(self.target().is_some()); + + let target_id = target.as_gl_constant(); + let command = match target { + TexImageTarget::Texture2D | TexImageTarget::CubeMap => { + WebGLCommand::TexStorage2D(target_id, levels, internal_format, width, height) + }, + TexImageTarget::Texture3D | TexImageTarget::Texture2DArray => { + WebGLCommand::TexStorage3D(target_id, levels, internal_format, width, height, depth) + }, + _ => unreachable!(), // handled by the caller + }; + self.upcast::().context().send_command(command); + + let mut width = width; + let mut height = height; + let mut depth = depth; + for level in 0..levels { + let image_info = ImageInfo { + width, + height, + depth, + internal_format, + data_type: None, + }; + self.set_image_infos_at_level(level, image_info); + + width = cmp::max(1, width / 2); + height = cmp::max(1, height / 2); + depth = cmp::max(1, depth / 2); + } + + self.is_immutable.set(true); + + if let Some(fb) = self.attached_framebuffer.get() { + fb.update_status(); + } + + Ok(()) + } } impl Drop for WebGLTexture { diff --git a/components/script/dom/webidls/WebGL2RenderingContext.webidl b/components/script/dom/webidls/WebGL2RenderingContext.webidl index 926d42292a2..96ab1417b7e 100644 --- a/components/script/dom/webidls/WebGL2RenderingContext.webidl +++ b/components/script/dom/webidls/WebGL2RenderingContext.webidl @@ -310,10 +310,10 @@ interface mixin WebGL2RenderingContextBase GLsizei width, GLsizei height); /* Texture objects */ - // 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); + 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); //[Throws] //void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, diff --git a/tests/wpt/webgl/meta/conformance/textures/misc/tex-input-validation.html.ini b/tests/wpt/webgl/meta/conformance/textures/misc/tex-input-validation.html.ini index 9611a8b8c64..d1537b75d51 100644 --- a/tests/wpt/webgl/meta/conformance/textures/misc/tex-input-validation.html.ini +++ b/tests/wpt/webgl/meta/conformance/textures/misc/tex-input-validation.html.ini @@ -8,3 +8,7 @@ [WebGL test #37: getError expected: NO_ERROR. Was INVALID_OPERATION : colorBufferFormat: RGB565 internalFormat: RGB target: TEXTURE_2D border: 0] expected: FAIL + + [WebGL test #13: getError expected: INVALID_ENUM. Was NO_ERROR : paramName: 0x813a] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/buffers/delete-buffer.html.ini b/tests/wpt/webgl/meta/conformance2/buffers/delete-buffer.html.ini deleted file mode 100644 index 6cbd38b829b..00000000000 --- a/tests/wpt/webgl/meta/conformance2/buffers/delete-buffer.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[delete-buffer.html] - [WebGL test #2: getError expected: NO_ERROR. Was INVALID_ENUM : texImage2D should succeed] - expected: FAIL - diff --git a/tests/wpt/webgl/meta/conformance2/context/methods-2.html.ini b/tests/wpt/webgl/meta/conformance2/context/methods-2.html.ini index 100b5866388..6d8a4c6ae1c 100644 --- a/tests/wpt/webgl/meta/conformance2/context/methods-2.html.ini +++ b/tests/wpt/webgl/meta/conformance2/context/methods-2.html.ini @@ -1,46 +1,40 @@ [methods-2.html] + [WebGL test #7: Property either does not exist or is not a function: vertexAttribI4i] + expected: FAIL + [WebGL test #1: Property either does not exist or is not a function: blitFramebuffer] expected: FAIL - [WebGL test #7: Property either does not exist or is not a function: compressedTexImage3D] + [WebGL test #12: Property either does not exist or is not a function: drawRangeElements] expected: FAIL - [WebGL test #4: Property either does not exist or is not a function: texStorage3D] + [WebGL test #4: Property either does not exist or is not a function: copyTexSubImage3D] expected: FAIL - [WebGL test #11: Property either does not exist or is not a function: vertexAttribI4ui] + [WebGL test #5: Property either does not exist or is not a function: compressedTexImage3D] expected: FAIL [WebGL test #2: Property either does not exist or is not a function: texImage3D] expected: FAIL - [WebGL test #12: Property either does not exist or is not a function: vertexAttribI4uiv] + [WebGL test #3: Property either does not exist or is not a function: texSubImage3D] expected: FAIL - [WebGL test #3: Property either does not exist or is not a function: texStorage2D] - expected: FAIL - - [WebGL test #8: Property either does not exist or is not a function: compressedTexSubImage3D] + [WebGL test #6: Property either does not exist or is not a function: compressedTexSubImage3D] expected: FAIL [WebGL test #0: Property either does not exist or is not a function: isContextLost] expected: FAIL - [WebGL test #9: Property either does not exist or is not a function: vertexAttribI4i] + [WebGL test #9: Property either does not exist or is not a function: vertexAttribI4ui] expected: FAIL - [WebGL test #13: Property either does not exist or is not a function: vertexAttribIPointer] + [WebGL test #8: Property either does not exist or is not a function: vertexAttribI4iv] expected: FAIL - [WebGL test #14: Property either does not exist or is not a function: drawRangeElements] + [WebGL test #11: Property either does not exist or is not a function: vertexAttribIPointer] expected: FAIL - [WebGL test #5: Property either does not exist or is not a function: texSubImage3D] - expected: FAIL - - [WebGL test #10: Property either does not exist or is not a function: vertexAttribI4iv] - expected: FAIL - - [WebGL test #6: Property either does not exist or is not a function: copyTexSubImage3D] + [WebGL test #10: Property either does not exist or is not a function: vertexAttribI4uiv] expected: FAIL diff --git a/tests/wpt/webgl/meta/conformance2/extensions/ext-color-buffer-float.html.ini b/tests/wpt/webgl/meta/conformance2/extensions/ext-color-buffer-float.html.ini index 44ce3f63f74..0e11cb4cc05 100644 --- a/tests/wpt/webgl/meta/conformance2/extensions/ext-color-buffer-float.html.ini +++ b/tests/wpt/webgl/meta/conformance2/extensions/ext-color-buffer-float.html.ini @@ -1,52 +1,55 @@ [ext-color-buffer-float.html] - [WebGL test #11: getError expected: NO_ERROR. Was INVALID_ENUM : floating-point texture allocation should succeed] - expected: FAIL - - [WebGL test #57: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] - expected: FAIL - - [WebGL test #17: getError expected: NO_ERROR. Was INVALID_ENUM : floating-point texture allocation should succeed] - expected: FAIL - - [WebGL test #8: getError expected: NO_ERROR. Was INVALID_ENUM : floating-point texture allocation should succeed] - expected: FAIL - - [WebGL test #48: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] - expected: FAIL - - [WebGL test #5: getError expected: NO_ERROR. Was INVALID_ENUM : floating-point texture allocation should succeed] - expected: FAIL - - [WebGL test #45: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] - expected: FAIL - - [WebGL test #42: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] - expected: FAIL - - [WebGL test #30: getError expected: NO_ERROR. Was INVALID_ENUM : RGB16F texture allocation should succeed] - expected: FAIL - - [WebGL test #33: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] - expected: FAIL - - [WebGL test #2: getError expected: NO_ERROR. Was INVALID_ENUM : floating-point texture allocation should succeed] - expected: FAIL - - [WebGL test #14: getError expected: NO_ERROR. Was INVALID_ENUM : floating-point texture allocation should succeed] - expected: FAIL - - [WebGL test #20: getError expected: NO_ERROR. Was INVALID_ENUM : floating-point texture allocation should succeed] + [WebGL test #43: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36054. Was 36053.] expected: FAIL [WebGL test #51: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] expected: FAIL - [WebGL test #54: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] + [WebGL test #55: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36054. Was 36053.] expected: FAIL - [WebGL test #36: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] + [WebGL test #18: floating-point RGBA32F render target should not be supported without enabling EXT_color_buffer_float] + expected: FAIL + + [WebGL test #59: getError expected one of: INVALID_ENUM or INVALID_FRAMEBUFFER_OPERATION. Was INVALID_OPERATION : CopyTexImage2D should fail.] + expected: FAIL + + [WebGL test #45: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] + expected: FAIL + + [WebGL test #38: getError expected one of: INVALID_ENUM or INVALID_FRAMEBUFFER_OPERATION. Was INVALID_OPERATION : CopyTexImage2D should fail.] + expected: FAIL + + [WebGL test #56: getError expected one of: INVALID_ENUM or INVALID_FRAMEBUFFER_OPERATION. Was INVALID_OPERATION : CopyTexImage2D should fail.] + expected: FAIL + + [WebGL test #44: getError expected one of: INVALID_ENUM or INVALID_FRAMEBUFFER_OPERATION. Was INVALID_OPERATION : CopyTexImage2D should fail.] + expected: FAIL + + [WebGL test #33: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] + expected: FAIL + + [WebGL test #58: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36054. Was 36053.] + expected: FAIL + + [WebGL test #31: RGB16F render target should not be supported with or without enabling EXT_color_buffer_float] + expected: FAIL + + [WebGL test #37: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36054. Was 36053.] + expected: FAIL + + [WebGL test #49: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36054. Was 36053.] + expected: FAIL + + [WebGL test #21: floating-point R11F_G11F_B10F render target should not be supported without enabling EXT_color_buffer_float] + expected: FAIL + + [WebGL test #9: floating-point RGBA16F render target should not be supported without enabling EXT_color_buffer_float] expected: FAIL [WebGL test #39: getError expected: NO_ERROR. Was INVALID_ENUM : Setup framebuffer with texture should succeed.] expected: FAIL + [WebGL test #50: getError expected one of: INVALID_ENUM or INVALID_FRAMEBUFFER_OPERATION. Was INVALID_OPERATION : CopyTexImage2D should fail.] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/reading/read-pixels-from-fbo-test.html.ini b/tests/wpt/webgl/meta/conformance2/reading/read-pixels-from-fbo-test.html.ini index 088b1abbf13..56aa11d905f 100644 --- a/tests/wpt/webgl/meta/conformance2/reading/read-pixels-from-fbo-test.html.ini +++ b/tests/wpt/webgl/meta/conformance2/reading/read-pixels-from-fbo-test.html.ini @@ -1,97 +1,7 @@ [read-pixels-from-fbo-test.html] - [WebGL test #0: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] + [WebGL test #86: Expected color = 716.0999999999999,0,511.5,3, was = 0,0,0,0] expected: FAIL - [WebGL test #1: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #2: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #3: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #4: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #5: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #6: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #7: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #8: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #9: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #10: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #11: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #12: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #13: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #14: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #15: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #16: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #17: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #18: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #19: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #20: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #21: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #22: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #23: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #24: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #25: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #26: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #27: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #28: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #29: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #30: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] - expected: FAIL - - [WebGL test #31: getError expected: NO_ERROR. Was INVALID_ENUM : Setting up fbo should generate no error] + [WebGL test #85: getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should generate no error] expected: FAIL diff --git a/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-size-overflow.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-size-overflow.html.ini index aec49d01d5a..c839e942b76 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-size-overflow.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-size-overflow.html.ini @@ -1,4 +1,5 @@ [blitframebuffer-size-overflow.html] - [WebGL test #1: Framebuffer incomplete.] + expected: ERROR + [WebGL test #1: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL diff --git a/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html.ini index 6e960398105..126c12040bb 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers.html.ini @@ -1,109 +1,5 @@ [blitframebuffer-srgb-and-linear-drawbuffers.html] - [WebGL test #10: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #31: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #7: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #35: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #3: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #4: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #1: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #21: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #14: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #30: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #6: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #11: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #9: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #2: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #22: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #20: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #27: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #13: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #12: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #19: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #34: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #24: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #25: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #17: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #16: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #15: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #18: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #33: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #28: getError expected: NO_ERROR. Was INVALID_ENUM : setup read framebuffer should succeed] - expected: FAIL - - [WebGL test #8: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #26: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #32: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #23: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #36: Framebuffer incomplete when setup draw framebuffer.] - expected: FAIL - - [WebGL test #5: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] - expected: FAIL - - [WebGL test #29: getError expected: NO_ERROR. Was INVALID_ENUM : setup draw framebuffer should succeed] + expected: ERROR + [WebGL test #3: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL diff --git a/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-stencil-only.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-stencil-only.html.ini index 6a83e87292a..94a3dc8a203 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-stencil-only.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/blitframebuffer-stencil-only.html.ini @@ -1,5 +1,5 @@ [blitframebuffer-stencil-only.html] expected: ERROR - [WebGL test #5: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + [WebGL test #11: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL diff --git a/tests/wpt/webgl/meta/conformance2/rendering/clear-srgb-color-buffer.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/clear-srgb-color-buffer.html.ini deleted file mode 100644 index 219c4ae023b..00000000000 --- a/tests/wpt/webgl/meta/conformance2/rendering/clear-srgb-color-buffer.html.ini +++ /dev/null @@ -1,10 +0,0 @@ -[clear-srgb-color-buffer.html] - [WebGL test #1: Framebuffer incomplete.] - expected: FAIL - - [WebGL test #2: \nat (0, 0) expected: 124,193,222,255 was 0,0,0,0] - expected: FAIL - - [WebGL test #3: \nat (0, 0) expected: 124,193,222,255 was 0,0,0,0] - expected: FAIL - diff --git a/tests/wpt/webgl/meta/conformance2/rendering/depth-stencil-feedback-loop.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/depth-stencil-feedback-loop.html.ini index d1271d22577..84ba97b1f10 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/depth-stencil-feedback-loop.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/depth-stencil-feedback-loop.html.ini @@ -2,6 +2,3 @@ [WebGL test #3: Framebuffer incomplete.] expected: FAIL - [WebGL test #2: getError expected: NO_ERROR. Was INVALID_ENUM : Succeed to create textures.] - expected: FAIL - diff --git a/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers-dirty-state-bug.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers-dirty-state-bug.html.ini index 7908dfc91f2..d0589234ac0 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers-dirty-state-bug.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers-dirty-state-bug.html.ini @@ -1,22 +1,4 @@ [draw-buffers-dirty-state-bug.html] - [WebGL test #6: should be green\nat (0, 0) expected: 0,255,0,255 was 0,0,0,0] - expected: FAIL - - [WebGL test #3: should be red\nat (0, 0) expected: 255,0,0,255 was 0,0,0,0] - expected: FAIL - - [WebGL test #7: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : there should be no errors] - expected: FAIL - [WebGL test #4: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : Clear and draw should cause no GL errors] expected: FAIL - [WebGL test #2: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : Clear and draw should cause no GL errors] - expected: FAIL - - [WebGL test #1: getError expected: NO_ERROR. Was INVALID_ENUM : Setup should cause no GL errors] - expected: FAIL - - [WebGL test #5: should be red\nat (0, 0) expected: 255,0,0,255 was 0,0,0,0] - expected: FAIL - diff --git a/tests/wpt/webgl/meta/conformance2/rendering/framebuffer-completeness-draw-framebuffer.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/framebuffer-completeness-draw-framebuffer.html.ini deleted file mode 100644 index 12d39f65f15..00000000000 --- a/tests/wpt/webgl/meta/conformance2/rendering/framebuffer-completeness-draw-framebuffer.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[framebuffer-completeness-draw-framebuffer.html] - expected: ERROR - [WebGL test #2: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] - expected: FAIL - diff --git a/tests/wpt/webgl/meta/conformance2/rendering/read-draw-when-missing-image.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/read-draw-when-missing-image.html.ini index 47ce7fd0715..2a21dac4e5c 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/read-draw-when-missing-image.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/read-draw-when-missing-image.html.ini @@ -1,17 +1,2 @@ [read-draw-when-missing-image.html] - expected: ERROR - [WebGL test #3: getError expected: INVALID_OPERATION. Was INVALID_FRAMEBUFFER_OPERATION : Should generate INVALID_OPERATION when reading from a color buffer without image.] - expected: FAIL - - [WebGL test #1: Framebuffer incomplete.] - expected: FAIL - - [WebGL test #4: getError expected: INVALID_OPERATION. Was INVALID_ENUM : Should generate INVALID_OPERATION when reading from a color buffer without image.] - expected: FAIL - - [WebGL test #2: getError expected: INVALID_OPERATION. Was INVALID_ENUM : Should generate INVALID_OPERATION when reading from a color buffer without image.] - expected: FAIL - - [WebGL test #5: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] - expected: FAIL - + expected: TIMEOUT diff --git a/tests/wpt/webgl/meta/conformance2/samplers/multi-context-sampler-test.html.ini b/tests/wpt/webgl/meta/conformance2/samplers/multi-context-sampler-test.html.ini deleted file mode 100644 index 0ad621689b4..00000000000 --- a/tests/wpt/webgl/meta/conformance2/samplers/multi-context-sampler-test.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[multi-context-sampler-test.html] - [WebGL test #2: should be green\nat (0, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #3: getError expected: NO_ERROR. Was INVALID_ENUM : there should be no errors] - expected: FAIL - diff --git a/tests/wpt/webgl/meta/conformance2/state/gl-object-get-calls.html.ini b/tests/wpt/webgl/meta/conformance2/state/gl-object-get-calls.html.ini index 83e3157f1de..cf02f0b279d 100644 --- a/tests/wpt/webgl/meta/conformance2/state/gl-object-get-calls.html.ini +++ b/tests/wpt/webgl/meta/conformance2/state/gl-object-get-calls.html.ini @@ -9,12 +9,27 @@ [WebGL test #203: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_IMMUTABLE_LEVELS) should be 0 (of type number). Was null (of type object).] expected: FAIL + [WebGL test #10: gl.getBufferParameter(gl.COPY_WRITE_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #9: gl.getBufferParameter(gl.COPY_WRITE_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #16: gl.getBufferParameter(gl.PIXEL_UNPACK_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #4: gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).] + expected: FAIL + [WebGL test #204: getTexParameter returned 1 instead of null for invalid parameter enum: 0x84fe] expected: FAIL [WebGL test #196: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC) should be 515 (of type number). Was null (of type object).] expected: FAIL + [WebGL test #13: gl.getBufferParameter(gl.PIXEL_PACK_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).] + expected: FAIL + [WebGL test #257: getError expected: NO_ERROR. Was INVALID_OPERATION : ] expected: FAIL @@ -27,13 +42,16 @@ [WebGL test #198: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL) should be 10 (of type number). Was null (of type object).] expected: FAIL + [WebGL test #15: gl.getBufferParameter(gl.PIXEL_UNPACK_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).] + expected: FAIL + [WebGL test #337: gl.getActiveUniformBlockName(program, 0) should be Transform. Was _uTransform.] expected: FAIL [WebGL test #259: gl.getUniform(samplerForWebGL2Program, s2DArrayValLoc) should be 1. Was 0.] expected: FAIL - [WebGL test #200: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MIN_LOD) should be 0 (of type number). Was null (of type object).] + [WebGL test #199: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LOD) should be 10. Was 1000.] expected: FAIL [WebGL test #182: gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_SAMPLES) should be 4 (of type number). Was null (of type object).] @@ -42,12 +60,45 @@ [WebGL test #276: getError expected: NO_ERROR. Was INVALID_ENUM : ] expected: FAIL - [WebGL test #195: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_BASE_LEVEL) should be 0 (of type number). Was null (of type object).] + [WebGL test #3: gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).] expected: FAIL [WebGL test #197: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE) should be 34894 (of type number). Was null (of type object).] expected: FAIL + [WebGL test #198: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL) should be 10. Was 1000.] + expected: FAIL + + [WebGL test #201: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_R) should be 33071. Was 10497.] + expected: FAIL + + [WebGL test #5: getBufferParameter did not generate INVALID_ENUM for invalid parameter enum: NO_ERROR] + expected: FAIL + + [WebGL test #197: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE) should be 34894. Was 0.] + expected: FAIL + + [WebGL test #200: gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MIN_LOD) should be 0. Was -1000.] + expected: FAIL + + [WebGL test #18: gl.getBufferParameter(gl.TRANSFORM_FEEDBACK_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #19: gl.getBufferParameter(gl.TRANSFORM_FEEDBACK_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #21: gl.getBufferParameter(gl.UNIFORM_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #7: gl.getBufferParameter(gl.COPY_READ_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #6: gl.getBufferParameter(gl.COPY_READ_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #12: gl.getBufferParameter(gl.PIXEL_PACK_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).] + expected: FAIL + [WebGL test #275: gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_INTEGER) should be true (of type boolean). Was null (of type object).] expected: FAIL @@ -65,3 +116,4 @@ [WebGL test #183: getRenderbufferParameter did not generate INVALID_ENUM for invalid parameter enum: NO_ERROR] expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/canvas/__dir__.ini similarity index 100% rename from tests/wpt/webgl/meta/conformance2/textures/__dir__.ini rename to tests/wpt/webgl/meta/conformance2/textures/canvas/__dir__.ini diff --git a/tests/wpt/webgl/meta/conformance2/textures/canvas_sub_rectangle/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/canvas_sub_rectangle/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/canvas_sub_rectangle/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_blob/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_blob/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_blob/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_canvas/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_canvas/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_canvas/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image_bitmap/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image_bitmap/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image_bitmap/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image_data/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image_data/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_image_data/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_video/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_video/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image_bitmap_from_video/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/image_data/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/image_data/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/image_data/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/active-3d-texture-bug.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/active-3d-texture-bug.html.ini new file mode 100644 index 00000000000..70d583f9486 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/active-3d-texture-bug.html.ini @@ -0,0 +1,5 @@ +[active-3d-texture-bug.html] + expected: ERROR + [WebGL test #1: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-cube-map-AMD-bug.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-cube-map-AMD-bug.html.ini new file mode 100644 index 00000000000..08c8e3e17c2 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-cube-map-AMD-bug.html.ini @@ -0,0 +1,115 @@ +[copy-texture-cube-map-AMD-bug.html] + [WebGL test #15: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054.] + expected: FAIL + + [WebGL test #36: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #38: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #24: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #21: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #40: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #23: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #17: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #39: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #22: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #29: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054.] + expected: FAIL + + [WebGL test #13: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #14: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #11: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #20: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #9: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #19: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #10: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #28: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #6: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #34: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #12: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #26: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #32: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #33: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #41: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #37: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #8: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #4: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #7: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #42: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #31: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #35: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #3: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #27: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #25: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + + [WebGL test #18: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : CopyTexSubImage2D should succeed.] + expected: FAIL + + [WebGL test #5: getError expected: NO_ERROR. Was INVALID_OPERATION : CopyTexImage2D should succeed.] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-luma-format.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-luma-format.html.ini new file mode 100644 index 00000000000..38375ae24b3 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-luma-format.html.ini @@ -0,0 +1,5 @@ +[copy-texture-image-luma-format.html] + expected: ERROR + [WebGL test #1: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-same-texture.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-same-texture.html.ini new file mode 100644 index 00000000000..54541fa3141 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-same-texture.html.ini @@ -0,0 +1,2 @@ +[copy-texture-image-same-texture.html] + expected: TIMEOUT diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-webgl-specific.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-webgl-specific.html.ini new file mode 100644 index 00000000000..19583744b16 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image-webgl-specific.html.ini @@ -0,0 +1,5 @@ +[copy-texture-image-webgl-specific.html] + expected: ERROR + [WebGL test #1: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image.html.ini new file mode 100644 index 00000000000..a4492f17879 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/copy-texture-image.html.ini @@ -0,0 +1,2 @@ +[copy-texture-image.html] + expected: TIMEOUT diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/gl-get-tex-parameter.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/gl-get-tex-parameter.html.ini new file mode 100644 index 00000000000..2f373d3a7b8 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/gl-get-tex-parameter.html.ini @@ -0,0 +1,673 @@ +[gl-get-tex-parameter.html] + [WebGL test #87: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LOD"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #206: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #15: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_T"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #7: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_S"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #278: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LEVEL"\]) should be 300 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #311: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #173: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #313: getError expected: NO_ERROR. Was INVALID_OPERATION : should be no errors] + expected: FAIL + + [WebGL test #199: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #261: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #163: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100. Was 0.] + expected: FAIL + + [WebGL test #246: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_R"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #283: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_LOD"\]) should be -500. Was -1000.] + expected: FAIL + + [WebGL test #165: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #136: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #256: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 513 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #244: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_R"\]) should be 33648. Was 10497.] + expected: FAIL + + [WebGL test #247: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_R"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #189: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LOD"\]) should be 500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #103: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #158: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #184: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_LOD"\]) should be -500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #243: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_R"\]) should be 33071. Was 10497.] + expected: FAIL + + [WebGL test #143: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_R"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #37: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_R"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #47: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 515 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #153: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894. Was 0.] + expected: FAIL + + [WebGL test #200: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #238: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #215: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_S"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #69: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LEVEL"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #71: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #312: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #268: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_BASE_LEVEL"\]) should be 99. Was 0.] + expected: FAIL + + [WebGL test #56: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #280: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 300 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #88: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LOD"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #290: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LOD"\]) should be 999. Was 1000.] + expected: FAIL + + [WebGL test #241: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_R"\]) should be 33071. Was 10497.] + expected: FAIL + + [WebGL test #171: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800. Was 1000.] + expected: FAIL + + [WebGL test #186: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LOD"\]) should be 500. Was 1000.] + expected: FAIL + + [WebGL test #192: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LOD"\]) should be 500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #94: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #95: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #292: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LOD"\]) should be 999. Was 1000.] + expected: FAIL + + [WebGL test #303: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #61: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_BASE_LEVEL"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #112: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_S"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #202: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #147: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516. Was 515.] + expected: FAIL + + [WebGL test #204: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #287: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_LOD"\]) should be -500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #32: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #265: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100. Was 0.] + expected: FAIL + + [WebGL test #96: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #70: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LEVEL"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #306: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #205: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #187: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LOD"\]) should be 500. Was 1000.] + expected: FAIL + + [WebGL test #252: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 513. Was 515.] + expected: FAIL + + [WebGL test #133: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #128: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #213: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_S"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #45: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 515 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #293: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LOD"\]) should be 500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #144: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_R"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #207: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #148: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516. Was 515.] + expected: FAIL + + [WebGL test #295: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LOD"\]) should be 500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #137: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_R"\]) should be 33071. Was 10497.] + expected: FAIL + + [WebGL test #216: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_S"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #279: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #270: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_BASE_LEVEL"\]) should be 99 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #178: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_LOD"\]) should be -500. Was -1000.] + expected: FAIL + + [WebGL test #29: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #242: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_R"\]) should be 33648. Was 10497.] + expected: FAIL + + [WebGL test #307: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #302: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #269: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #221: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_T"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #276: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LEVEL"\]) should be 300. Was 1000.] + expected: FAIL + + [WebGL test #264: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #262: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_MODE"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #111: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_S"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #101: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #308: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #127: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #288: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_LOD"\]) should be -999 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #190: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LOD"\]) should be 500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #48: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 515 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #125: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #149: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #267: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100. Was 0.] + expected: FAIL + + [WebGL test #160: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #301: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #168: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #62: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_BASE_LEVEL"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #31: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #251: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516. Was 515.] + expected: FAIL + + [WebGL test #100: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #135: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #8: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_S"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #183: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_LOD"\]) should be -500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #224: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_T"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #182: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_LOD"\]) should be -500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #266: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 99. Was 0.] + expected: FAIL + + [WebGL test #72: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #245: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_R"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #138: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_R"\]) should be 33071. Was 10497.] + expected: FAIL + + [WebGL test #117: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_T"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #80: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_LOD"\]) should be -1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #23: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #166: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #273: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800. Was 1000.] + expected: FAIL + + [WebGL test #38: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_R"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #176: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #175: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #24: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #0: getError expected: NO_ERROR. Was INVALID_ENUM : should be no errors] + expected: FAIL + + [WebGL test #6: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_S"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #98: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #150: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #180: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_LOD"\]) should be -500. Was -1000.] + expected: FAIL + + [WebGL test #203: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #237: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #304: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #305: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #99: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #119: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_T"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #201: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #159: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #232: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #250: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 513. Was 515.] + expected: FAIL + + [WebGL test #21: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #222: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_T"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #231: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #253: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #30: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #126: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #223: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_T"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #93: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #286: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_LOD"\]) should be -999 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #239: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #285: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_LOD"\]) should be -500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #85: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LOD"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #46: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 515 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #55: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #146: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516. Was 515.] + expected: FAIL + + [WebGL test #309: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #63: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #161: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100. Was 0.] + expected: FAIL + + [WebGL test #97: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was 0 (of type number).] + expected: FAIL + + [WebGL test #277: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #240: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #157: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #54: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_MODE"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #254: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 513 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #177: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_LOD"\]) should be -500. Was -1000.] + expected: FAIL + + [WebGL test #142: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_R"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #282: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_LOD"\]) should be -999. Was -1000.] + expected: FAIL + + [WebGL test #191: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LOD"\]) should be 500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #155: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894. Was 0.] + expected: FAIL + + [WebGL test #263: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #255: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #110: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_S"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #167: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #22: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #296: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MAX_LOD"\]) should be 999 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #284: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_LOD"\]) should be -999. Was -1000.] + expected: FAIL + + [WebGL test #179: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_LOD"\]) should be -500. Was -1000.] + expected: FAIL + + [WebGL test #259: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894. Was 0.] + expected: FAIL + + [WebGL test #185: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LOD"\]) should be 500. Was 1000.] + expected: FAIL + + [WebGL test #272: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 99 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #198: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #170: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800. Was 1000.] + expected: FAIL + + [WebGL test #281: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_LOD"\]) should be -500. Was -1000.] + expected: FAIL + + [WebGL test #271: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #140: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_R"\]) should be 33071. Was 10497.] + expected: FAIL + + [WebGL test #53: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_COMPARE_MODE"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #77: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_LOD"\]) should be -1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #104: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #181: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_LOD"\]) should be -500 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #78: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_LOD"\]) should be -1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #164: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100. Was 0.] + expected: FAIL + + [WebGL test #145: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516. Was 515.] + expected: FAIL + + [WebGL test #5: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_S"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #79: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_MIN_LOD"\]) should be -1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #152: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #310: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #174: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #16: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_T"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #102: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #289: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LOD"\]) should be 500. Was 1000.] + expected: FAIL + + [WebGL test #230: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #208: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_IMMUTABLE_FORMAT"\]) should be false (of type boolean). Was null (of type object).] + expected: FAIL + + [WebGL test #141: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_R"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #86: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LOD"\]) should be 1000 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #14: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_T"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #172: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800. Was 1000.] + expected: FAIL + + [WebGL test #118: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_T"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #64: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #120: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_T"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #151: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #229: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #294: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MAX_LOD"\]) should be 999 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #214: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_S"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #291: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LOD"\]) should be 500. Was 1000.] + expected: FAIL + + [WebGL test #274: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 300. Was 1000.] + expected: FAIL + + [WebGL test #188: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LOD"\]) should be 500. Was 1000.] + expected: FAIL + + [WebGL test #162: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_BASE_LEVEL"\]) should be 100. Was 0.] + expected: FAIL + + [WebGL test #40: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_R"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #249: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_COMPARE_FUNC"\]) should be 516. Was 515.] + expected: FAIL + + [WebGL test #134: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #275: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800. Was 1000.] + expected: FAIL + + [WebGL test #197: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_IMMUTABLE_LEVELS"\]) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #156: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894. Was 0.] + expected: FAIL + + [WebGL test #39: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_R"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #13: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_T"\]) should be 10497 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #139: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_R"\]) should be 33071. Was 10497.] + expected: FAIL + + [WebGL test #257: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894. Was 0.] + expected: FAIL + + [WebGL test #248: gl.getTexParameter(gl["TEXTURE_3D"\], gl["TEXTURE_WRAP_R"\]) should be 33648 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #109: gl.getTexParameter(gl["TEXTURE_2D_ARRAY"\], gl["TEXTURE_WRAP_S"\]) should be 33071 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #154: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_COMPARE_MODE"\]) should be 34894. Was 0.] + expected: FAIL + + [WebGL test #169: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAX_LEVEL"\]) should be 800. Was 1000.] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini new file mode 100644 index 00000000000..64701eb4e27 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/origin-clean-conformance-offscreencanvas.html.ini @@ -0,0 +1,5 @@ +[origin-clean-conformance-offscreencanvas.html] + expected: ERROR + [WebGL test #2: Unable to fetch WebGL rendering context for Canvas] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-3d-mipmap-levels-intel-bug.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-3d-mipmap-levels-intel-bug.html.ini new file mode 100644 index 00000000000..9365e23f34f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-3d-mipmap-levels-intel-bug.html.ini @@ -0,0 +1,16 @@ +[tex-3d-mipmap-levels-intel-bug.html] + [WebGL test #3: getError expected: NO_ERROR. Was INVALID_OPERATION : texParameter(TEXTURE_BASE_LEVEL) should succeed] + expected: FAIL + + [WebGL test #6: should draw with [255, 0, 0, 255\]\nat (0, 0) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #2: getError expected: NO_ERROR. Was INVALID_OPERATION : texParameter(TEXTURE_MIN_FILTER) should succeed] + expected: FAIL + + [WebGL test #4: getError expected: NO_ERROR. Was INVALID_OPERATION : texStorage3D should succeed] + expected: FAIL + + [WebGL test #1: getError expected: NO_ERROR. Was INVALID_OPERATION : texParameter(TEXTURE_MAG_FILTER) should succeed] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-3d-size-limit.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-3d-size-limit.html.ini new file mode 100644 index 00000000000..ee173e30981 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-3d-size-limit.html.ini @@ -0,0 +1,5 @@ +[tex-3d-size-limit.html] + expected: ERROR + [WebGL test #1: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-base-level-bug.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-base-level-bug.html.ini new file mode 100644 index 00000000000..e7271450a0e --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-base-level-bug.html.ini @@ -0,0 +1,10 @@ +[tex-base-level-bug.html] + [WebGL test #3: should draw with [255, 0, 0, 255\]\nat (0, 0) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1: getError expected: NO_ERROR. Was INVALID_ENUM : Texture setup should succeed] + expected: FAIL + + [WebGL test #5: should draw with [255, 0, 0, 255\]\nat (0, 0) expected: 255,0,0,255 was 0,0,0,0] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-and-sub-image-with-array-buffer-view-sub-source.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-and-sub-image-with-array-buffer-view-sub-source.html.ini new file mode 100644 index 00000000000..a85ad6ba99d --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-and-sub-image-with-array-buffer-view-sub-source.html.ini @@ -0,0 +1,17 @@ +[tex-image-and-sub-image-with-array-buffer-view-sub-source.html] + expected: ERROR + [WebGL test #3: Element 1: expected 1, got 0] + expected: FAIL + + [WebGL test #8: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + + [WebGL test #7: Element 1: expected 1, got 0] + expected: FAIL + + [WebGL test #4: getError expected: INVALID_OPERATION. Was NO_ERROR : srcOffset too large] + expected: FAIL + + [WebGL test #0: getError expected: INVALID_OPERATION. Was NO_ERROR : srcOffset too large] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html.ini new file mode 100644 index 00000000000..c47b1a45eb8 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements.html.ini @@ -0,0 +1,2 @@ +[tex-image-with-bad-args-from-dom-elements.html] + expected: TIMEOUT diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-bad-args.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-bad-args.html.ini new file mode 100644 index 00000000000..d98f88596a7 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-bad-args.html.ini @@ -0,0 +1,13 @@ +[tex-image-with-bad-args.html] + [WebGL test #5: getError expected: INVALID_OPERATION. Was INVALID_ENUM : TexImage2D taking LUMINANCE_ALPHA/LUMINANCE_ALPHA/HALF_FLOAT] + expected: FAIL + + [WebGL test #3: getError expected: INVALID_OPERATION. Was INVALID_ENUM : TexImage2D taking RGBA/RGBA/HALF_FLOAT] + expected: FAIL + + [WebGL test #7: getError expected one of: INVALID_VALUE or INVALID_OPERATION. Was INVALID_ENUM : TexImage2D taking RED/RED/UNSIGNED_SHORT] + expected: FAIL + + [WebGL test #6: getError expected: INVALID_VALUE. Was INVALID_ENUM : TexImage2D taking 0x822a/RED/UNSIGNED_SHORT] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-different-data-source.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-different-data-source.html.ini new file mode 100644 index 00000000000..c2f7a4d0ca1 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-image-with-different-data-source.html.ini @@ -0,0 +1,2 @@ +[tex-image-with-different-data-source.html] + expected: TIMEOUT diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-input-validation.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-input-validation.html.ini new file mode 100644 index 00000000000..92e6f203372 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-input-validation.html.ini @@ -0,0 +1,23 @@ +[tex-input-validation.html] + expected: ERROR + [WebGL test #25: getError expected: INVALID_OPERATION. Was NO_ERROR : format: RGBA type: BYTE] + expected: FAIL + + [WebGL test #52: getError expected: INVALID_OPERATION. Was NO_ERROR : colorBufferFormat: RGB565 internalFormat: RGBA target: TEXTURE_2D] + expected: FAIL + + [WebGL test #24: getError expected: INVALID_OPERATION. Was INVALID_ENUM : format: RED type: UNSIGNED_BYTE] + expected: FAIL + + [WebGL test #41: getError expected: NO_ERROR. Was INVALID_OPERATION : colorBufferFormat: RGB565 internalFormat: RGB target: TEXTURE_2D border: 0] + expected: FAIL + + [WebGL test #71: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + + [WebGL test #70: getError expected: NO_ERROR. Was INVALID_ENUM : ] + expected: FAIL + + [WebGL test #68: getError expected: INVALID_OPERATION. Was NO_ERROR : colorBufferFormat: RGB internalFormat: RGBA] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-mipmap-levels.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-mipmap-levels.html.ini new file mode 100644 index 00000000000..eb0f3b1b1db --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-mipmap-levels.html.ini @@ -0,0 +1,32 @@ +[tex-mipmap-levels.html] + expected: ERROR + [WebGL test #23: getError expected: NO_ERROR. Was INVALID_ENUM : generateMipmap should succeed] + expected: FAIL + + [WebGL test #10: getError expected: NO_ERROR. Was INVALID_OPERATION : generateMipmap should succeed] + expected: FAIL + + [WebGL test #15: getError expected: NO_ERROR. Was INVALID_ENUM : texParameter(TEXTURE_MAX_LEVEL) should succeed] + expected: FAIL + + [WebGL test #21: getError expected: NO_ERROR. Was INVALID_ENUM : texParameter(TEXTURE_BASE_LEVEL) should succeed] + expected: FAIL + + [WebGL test #5: getError expected: NO_ERROR. Was INVALID_ENUM : texParameter(TEXTURE_MAX_LEVEL) should succeed] + expected: FAIL + + [WebGL test #9: should draw with [0, 0, 255, 255\]\nat (0, 0) expected: 0,0,255,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #24: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + + [WebGL test #14: getError expected: NO_ERROR. Was INVALID_ENUM : texParameter(TEXTURE_BASE_LEVEL) should succeed] + expected: FAIL + + [WebGL test #11: should draw with [255, 0, 0, 255\]\nat (0, 0) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #4: getError expected: NO_ERROR. Was INVALID_ENUM : texParameter(TEXTURE_BASE_LEVEL) should succeed] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-new-formats.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-new-formats.html.ini new file mode 100644 index 00000000000..37c492a3342 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-new-formats.html.ini @@ -0,0 +1,5 @@ +[tex-new-formats.html] + expected: ERROR + [WebGL test #8: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-storage-2d.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-storage-2d.html.ini new file mode 100644 index 00000000000..961113c885f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-storage-2d.html.ini @@ -0,0 +1,10 @@ +[tex-storage-2d.html] + [WebGL test #32: texture should sample as uninitialized texture after texStorage2D\nat (0, 0) expected: 0,0,0,255 was 255,84,64,255] + expected: FAIL + + [WebGL test #15: texture should sample as uninitialized texture after texStorage2D\nat (0, 0) expected: 0,0,0,0 was 120,110,52,162] + expected: FAIL + + [WebGL test #104: texture should sample as uninitialized texture after texStorage2D\nat (0, 0) expected: 0,0,0,255 was 208,68,57,255] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-storage-and-subimage-3d.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-storage-and-subimage-3d.html.ini new file mode 100644 index 00000000000..5749243978b --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-storage-and-subimage-3d.html.ini @@ -0,0 +1,23 @@ +[tex-storage-and-subimage-3d.html] + expected: ERROR + [WebGL test #8: getError expected: INVALID_OPERATION. Was INVALID_ENUM : texStorage3D should fail when no texture is bound] + expected: FAIL + + [WebGL test #10: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + + [WebGL test #5: getError expected: INVALID_VALUE. Was INVALID_ENUM : texStorage3D should fail for zero levels] + expected: FAIL + + [WebGL test #1: getError expected: INVALID_VALUE. Was INVALID_ENUM : texStorage3D should fail for zero width] + expected: FAIL + + [WebGL test #4: getError expected: INVALID_VALUE. Was INVALID_ENUM : texStorage3D should fail for negative height] + expected: FAIL + + [WebGL test #3: getError expected: INVALID_VALUE. Was INVALID_ENUM : texStorage3D should fail for zero depth] + expected: FAIL + + [WebGL test #2: getError expected: INVALID_VALUE. Was INVALID_ENUM : texStorage3D should fail for zero height] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-subimage3d-canvas-bug.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-subimage3d-canvas-bug.html.ini new file mode 100644 index 00000000000..eb7d1329f1d --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-subimage3d-canvas-bug.html.ini @@ -0,0 +1,8 @@ +[tex-subimage3d-canvas-bug.html] + expected: ERROR + [WebGL test #1: getError expected: NO_ERROR. Was INVALID_ENUM : Should be no errors from TexStorage3D.] + expected: FAIL + + [WebGL test #2: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-subimage3d-pixel-buffer-bug.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-subimage3d-pixel-buffer-bug.html.ini new file mode 100644 index 00000000000..a07dbc30662 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-subimage3d-pixel-buffer-bug.html.ini @@ -0,0 +1,11 @@ +[tex-subimage3d-pixel-buffer-bug.html] + expected: ERROR + [WebGL test #2: getError expected: NO_ERROR. Was INVALID_ENUM : texStorage3D should succeed] + expected: FAIL + + [WebGL test #3: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + + [WebGL test #1: getError expected: NO_ERROR. Was INVALID_OPERATION : texParameter(TEXTURE_MIN_FILTER) should succeed] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params-imagedata.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params-imagedata.html.ini new file mode 100644 index 00000000000..630e35a229d --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params-imagedata.html.ini @@ -0,0 +1,5 @@ +[tex-unpack-params-imagedata.html] + expected: ERROR + [WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params-with-flip-y-and-premultiply-alpha.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params-with-flip-y-and-premultiply-alpha.html.ini new file mode 100644 index 00000000000..5c74052f873 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params-with-flip-y-and-premultiply-alpha.html.ini @@ -0,0 +1,2 @@ +[tex-unpack-params-with-flip-y-and-premultiply-alpha.html] + expected: TIMEOUT diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params.html.ini new file mode 100644 index 00000000000..6d23d48ac95 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/tex-unpack-params.html.ini @@ -0,0 +1,11 @@ +[tex-unpack-params.html] + expected: ERROR + [WebGL test #0: getError expected: NO_ERROR. Was INVALID_ENUM : Set up pixel store parameters should succeed] + expected: FAIL + + [WebGL test #11: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + + [WebGL test #10: getError expected: NO_ERROR. Was INVALID_ENUM : Set up pixel store parameters should succeed] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/texel-fetch-undefined.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/texel-fetch-undefined.html.ini new file mode 100644 index 00000000000..7be629fb6a3 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/texel-fetch-undefined.html.ini @@ -0,0 +1,16 @@ +[texel-fetch-undefined.html] + [WebGL test #4: should be 0,0,0,0\nat (0, 0) expected: 0,0,0,0 was 0,255,0,255] + expected: FAIL + + [WebGL test #5: should be 0,0,0,0\nat (0, 0) expected: 0,0,0,0 was 0,255,0,255] + expected: FAIL + + [WebGL test #3: should be 0,0,0,0\nat (0, 0) expected: 0,0,0,0 was 0,255,0,255] + expected: FAIL + + [WebGL test #6: should be 0,0,0,0\nat (0, 0) expected: 0,0,0,0 was 0,255,0,255] + expected: FAIL + + [WebGL test #2: should be 0,0,0,0\nat (0, 0) expected: 0,0,0,0 was 0,255,0,255] + expected: FAIL + diff --git a/tests/wpt/webgl/meta/conformance2/textures/misc/texture-npot.html.ini b/tests/wpt/webgl/meta/conformance2/textures/misc/texture-npot.html.ini new file mode 100644 index 00000000000..22cfa4430c4 --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/misc/texture-npot.html.ini @@ -0,0 +1,2 @@ +[texture-npot.html] + expected: TIMEOUT diff --git a/tests/wpt/webgl/meta/conformance2/textures/svg_image/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/svg_image/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/svg_image/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/video/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/video/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/video/__dir__.ini @@ -0,0 +1 @@ +disabled: for now diff --git a/tests/wpt/webgl/meta/conformance2/textures/webgl_canvas/__dir__.ini b/tests/wpt/webgl/meta/conformance2/textures/webgl_canvas/__dir__.ini new file mode 100644 index 00000000000..163ca23a12f --- /dev/null +++ b/tests/wpt/webgl/meta/conformance2/textures/webgl_canvas/__dir__.ini @@ -0,0 +1 @@ +disabled: for now