mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Implement gl.getUniform()
This commit is contained in:
parent
20714bd08c
commit
3e8c2d659a
14 changed files with 306 additions and 200 deletions
|
@ -982,6 +982,119 @@ impl WebGLImpl {
|
|||
WebGLCommand::VertexAttribDivisor { index, divisor } => {
|
||||
ctx.gl().vertex_attrib_divisor(index, divisor)
|
||||
}
|
||||
WebGLCommand::GetUniformBool(program_id, loc, ref sender) => {
|
||||
let mut value = [0];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value[0] != 0).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformBool2(program_id, loc, ref sender) => {
|
||||
let mut value = [0; 2];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
let value = [
|
||||
value[0] != 0,
|
||||
value[1] != 0,
|
||||
];
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformBool3(program_id, loc, ref sender) => {
|
||||
let mut value = [0; 3];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
let value = [
|
||||
value[0] != 0,
|
||||
value[1] != 0,
|
||||
value[2] != 0,
|
||||
];
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformBool4(program_id, loc, ref sender) => {
|
||||
let mut value = [0; 4];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
let value = [
|
||||
value[0] != 0,
|
||||
value[1] != 0,
|
||||
value[2] != 0,
|
||||
value[3] != 0,
|
||||
];
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformInt(program_id, loc, ref sender) => {
|
||||
let mut value = [0];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value[0]).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformInt2(program_id, loc, ref sender) => {
|
||||
let mut value = [0; 2];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformInt3(program_id, loc, ref sender) => {
|
||||
let mut value = [0; 3];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformInt4(program_id, loc, ref sender) => {
|
||||
let mut value = [0; 4];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformFloat(program_id, loc, ref sender) => {
|
||||
let mut value = [0.];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value[0]).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformFloat2(program_id, loc, ref sender) => {
|
||||
let mut value = [0.; 2];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformFloat3(program_id, loc, ref sender) => {
|
||||
let mut value = [0.; 3];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformFloat4(program_id, loc, ref sender) => {
|
||||
let mut value = [0.; 4];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformFloat9(program_id, loc, ref sender) => {
|
||||
let mut value = [0.; 9];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
WebGLCommand::GetUniformFloat16(program_id, loc, ref sender) => {
|
||||
let mut value = [0.; 16];
|
||||
unsafe {
|
||||
ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value);
|
||||
}
|
||||
sender.send(value).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: update test expectations in order to enable debug assertions
|
||||
|
|
|
@ -284,6 +284,20 @@ pub enum WebGLCommand {
|
|||
DrawArraysInstanced { mode: u32, first: i32, count: i32, primcount: i32 },
|
||||
DrawElementsInstanced { mode: u32, count: i32, type_: u32, offset: u32, primcount: i32 },
|
||||
VertexAttribDivisor { index: u32, divisor: u32 },
|
||||
GetUniformBool(WebGLProgramId, i32, WebGLSender<bool>),
|
||||
GetUniformBool2(WebGLProgramId, i32, WebGLSender<[bool; 2]>),
|
||||
GetUniformBool3(WebGLProgramId, i32, WebGLSender<[bool; 3]>),
|
||||
GetUniformBool4(WebGLProgramId, i32, WebGLSender<[bool; 4]>),
|
||||
GetUniformInt(WebGLProgramId, i32, WebGLSender<i32>),
|
||||
GetUniformInt2(WebGLProgramId, i32, WebGLSender<[i32; 2]>),
|
||||
GetUniformInt3(WebGLProgramId, i32, WebGLSender<[i32; 3]>),
|
||||
GetUniformInt4(WebGLProgramId, i32, WebGLSender<[i32; 4]>),
|
||||
GetUniformFloat(WebGLProgramId, i32, WebGLSender<f32>),
|
||||
GetUniformFloat2(WebGLProgramId, i32, WebGLSender<[f32; 2]>),
|
||||
GetUniformFloat3(WebGLProgramId, i32, WebGLSender<[f32; 3]>),
|
||||
GetUniformFloat4(WebGLProgramId, i32, WebGLSender<[f32; 4]>),
|
||||
GetUniformFloat9(WebGLProgramId, i32, WebGLSender<[f32; 9]>),
|
||||
GetUniformFloat16(WebGLProgramId, i32, WebGLSender<[f32; 16]>),
|
||||
}
|
||||
|
||||
macro_rules! define_resource_id_struct {
|
||||
|
|
|
@ -766,6 +766,17 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
|
|||
self.base.UniformMatrix4fv(location, transpose, v)
|
||||
}
|
||||
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
|
||||
#[allow(unsafe_code)]
|
||||
unsafe fn GetUniform(
|
||||
&self,
|
||||
cx: *mut JSContext,
|
||||
program: &WebGLProgram,
|
||||
location: &WebGLUniformLocation,
|
||||
) -> JSVal {
|
||||
self.base.GetUniform(cx, program, location)
|
||||
}
|
||||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
|
||||
fn UseProgram(&self, program: Option<&WebGLProgram>) {
|
||||
self.base.UseProgram(program)
|
||||
|
|
|
@ -8,8 +8,8 @@ use canvas_traits::webgl::{ActiveAttribInfo, DOMToTextureCommand, Parameter};
|
|||
use canvas_traits::webgl::{ShaderParameter, TexParameter, WebGLCommand};
|
||||
use canvas_traits::webgl::{WebGLContextShareMode, WebGLError};
|
||||
use canvas_traits::webgl::{WebGLFramebufferBindingRequest, WebGLMsg, WebGLMsgSender};
|
||||
use canvas_traits::webgl::{WebGLResult, WebGLSLVersion, WebGLVersion};
|
||||
use canvas_traits::webgl::{WebVRCommand, webgl_channel};
|
||||
use canvas_traits::webgl::{WebGLProgramId, WebGLResult, WebGLSLVersion, WebGLSender};
|
||||
use canvas_traits::webgl::{WebGLVersion, WebVRCommand, webgl_channel};
|
||||
use canvas_traits::webgl::WebGLError::*;
|
||||
use dom::bindings::cell::DomRefCell;
|
||||
use dom::bindings::codegen::Bindings::ANGLEInstancedArraysBinding::ANGLEInstancedArraysConstants;
|
||||
|
@ -56,12 +56,14 @@ use js::jsapi::{JSContext, JSObject, Type};
|
|||
use js::jsval::{BooleanValue, DoubleValue, Int32Value, UInt32Value, JSVal};
|
||||
use js::jsval::{ObjectValue, NullValue, UndefinedValue};
|
||||
use js::rust::CustomAutoRooterGuard;
|
||||
use js::typedarray::{ArrayBufferView, CreateWith, Float32Array, Int32Array, Uint32Array};
|
||||
use js::typedarray::{ArrayBufferView, CreateWith, Float32, Float32Array, Int32, Int32Array, Uint32Array};
|
||||
use js::typedarray::{TypedArray, TypedArrayElementCreator};
|
||||
use net_traits::image::base::PixelFormat;
|
||||
use net_traits::image_cache::ImageResponse;
|
||||
use offscreen_gl_context::{GLContextAttributes, GLLimits};
|
||||
use ref_filter_map::ref_filter_map;
|
||||
use script_layout_interface::HTMLCanvasDataSource;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servo_config::prefs::PREFS;
|
||||
use std::cell::{Cell, Ref};
|
||||
use std::cmp;
|
||||
|
@ -3600,6 +3602,80 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
});
|
||||
}
|
||||
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
|
||||
#[allow(unsafe_code)]
|
||||
unsafe fn GetUniform(
|
||||
&self,
|
||||
cx: *mut JSContext,
|
||||
program: &WebGLProgram,
|
||||
location: &WebGLUniformLocation,
|
||||
) -> JSVal {
|
||||
// FIXME(nox): https://github.com/servo/servo/issues/21133
|
||||
|
||||
if program.is_deleted() || !program.is_linked() || program.id() != location.program_id() {
|
||||
self.webgl_error(InvalidOperation);
|
||||
return NullValue();
|
||||
}
|
||||
|
||||
fn get<T, F>(
|
||||
triple: (&WebGLRenderingContext, WebGLProgramId, i32),
|
||||
f: F,
|
||||
) -> T
|
||||
where
|
||||
F: FnOnce(WebGLProgramId, i32, WebGLSender<T>) -> WebGLCommand,
|
||||
T: for<'de> Deserialize<'de> + Serialize,
|
||||
{
|
||||
let (sender, receiver) = webgl_channel().unwrap();
|
||||
triple.0.send_command(f(triple.1, triple.2, sender));
|
||||
receiver.recv().unwrap()
|
||||
}
|
||||
|
||||
let triple = (self, program.id(), location.id());
|
||||
|
||||
unsafe fn typed<T>(cx: *mut JSContext, value: &[T::Element]) -> JSVal
|
||||
where
|
||||
T: TypedArrayElementCreator,
|
||||
{
|
||||
rooted!(in(cx) let mut rval = ptr::null_mut::<JSObject>());
|
||||
<TypedArray<T, *mut JSObject>>::create(cx, CreateWith::Slice(&value), rval.handle_mut()).unwrap();
|
||||
ObjectValue(rval.get())
|
||||
}
|
||||
|
||||
match location.type_() {
|
||||
constants::BOOL => BooleanValue(get(triple, WebGLCommand::GetUniformBool)),
|
||||
constants::BOOL_VEC2 => {
|
||||
rooted!(in(cx) let mut rval = NullValue());
|
||||
get(triple, WebGLCommand::GetUniformBool2).to_jsval(cx, rval.handle_mut());
|
||||
rval.get()
|
||||
}
|
||||
constants::BOOL_VEC3 => {
|
||||
rooted!(in(cx) let mut rval = NullValue());
|
||||
get(triple, WebGLCommand::GetUniformBool3).to_jsval(cx, rval.handle_mut());
|
||||
rval.get()
|
||||
}
|
||||
constants::BOOL_VEC4 => {
|
||||
rooted!(in(cx) let mut rval = NullValue());
|
||||
get(triple, WebGLCommand::GetUniformBool4).to_jsval(cx, rval.handle_mut());
|
||||
rval.get()
|
||||
}
|
||||
constants::INT | constants::SAMPLER_2D | constants::SAMPLER_CUBE => {
|
||||
Int32Value(get(triple, WebGLCommand::GetUniformInt))
|
||||
}
|
||||
constants::INT_VEC2 => typed::<Int32>(cx, &get(triple, WebGLCommand::GetUniformInt2)),
|
||||
constants::INT_VEC3 => typed::<Int32>(cx, &get(triple, WebGLCommand::GetUniformInt3)),
|
||||
constants::INT_VEC4 => typed::<Int32>(cx, &get(triple, WebGLCommand::GetUniformInt4)),
|
||||
constants::FLOAT => DoubleValue(get(triple, WebGLCommand::GetUniformFloat) as f64),
|
||||
constants::FLOAT_VEC2 => typed::<Float32>(cx, &get(triple, WebGLCommand::GetUniformFloat2)),
|
||||
constants::FLOAT_VEC3 => typed::<Float32>(cx, &get(triple, WebGLCommand::GetUniformFloat3)),
|
||||
constants::FLOAT_VEC4 | constants::FLOAT_MAT2 => {
|
||||
typed::<Float32>(cx, &get(triple, WebGLCommand::GetUniformFloat4))
|
||||
}
|
||||
constants::FLOAT_MAT3 => typed::<Float32>(cx, &get(triple, WebGLCommand::GetUniformFloat9)),
|
||||
constants::FLOAT_MAT4 => typed::<Float32>(cx, &get(triple, WebGLCommand::GetUniformFloat16)),
|
||||
_ => panic!("wrong uniform type"),
|
||||
}
|
||||
}
|
||||
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
|
||||
fn UseProgram(&self, program: Option<&WebGLProgram>) {
|
||||
if let Some(program) = program {
|
||||
|
|
|
@ -580,7 +580,7 @@ interface WebGLRenderingContextBase
|
|||
|
||||
any getTexParameter(GLenum target, GLenum pname);
|
||||
|
||||
// any getUniform(WebGLProgram program, WebGLUniformLocation location);
|
||||
any getUniform(WebGLProgram program, WebGLUniformLocation location);
|
||||
|
||||
WebGLUniformLocation? getUniformLocation(WebGLProgram program, DOMString name);
|
||||
|
||||
|
|
|
@ -43,9 +43,6 @@
|
|||
[WebGL test #19: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.getShaderSource(shaderB)]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #20: contextA.getUniform(programB, locationA) threw exception TypeError: contextA.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #21: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.getUniformLocation(programB, 'u_modelViewProjMatrix')]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
[methods.html]
|
||||
[WebGL test #0: Property either does not exist or is not a function: getUniform]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #1: Property either does not exist or is not a function: isContextLost]
|
||||
[WebGL test #0: Property either does not exist or is not a function: isContextLost]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
[bad-arguments-test.html]
|
||||
type: testharness
|
||||
[WebGL test #78: context.getUniform(argument, loc) should be null. Threw exception TypeError: context.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #79: context.getUniform(program, argument) should be null. Threw exception TypeError: context.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #104: context.getUniform(argument, loc) should be null. Threw exception TypeError: context.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #105: context.getUniform(program, argument) should be null. Threw exception TypeError: context.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[uniformMatrixBadArgs.html]
|
||||
type: testharness
|
||||
[WebGL test #0: testUniformf]
|
||||
expected: FAIL
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
[gl-object-get-calls.html]
|
||||
[WebGL test #57: gl.getUniform(boolProgram, bvalLoc) should be true. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #58: gl.getUniform(boolProgram, bval2Loc) should be true,false. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #59: gl.getUniform(boolProgram, bval3Loc) should be true,false,true. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #60: gl.getUniform(boolProgram, bval4Loc) should be true,false,true,false. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #63: gl.getUniform(intProgram, ivalLoc) should be 1. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #64: gl.getUniform(intProgram, ival2Loc) should be 2,3. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #65: gl.getUniform(intProgram, ival3Loc) should be 4,5,6. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #66: gl.getUniform(intProgram, ival4Loc) should be 7,8,9,10. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #69: gl.getUniform(floatProgram, fvalLoc) should be 11. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #70: gl.getUniform(floatProgram, fval2Loc) should be 12,13. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #71: gl.getUniform(floatProgram, fval3Loc) should be 14,15,16. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #72: gl.getUniform(floatProgram, fval4Loc) should be 17,18,19,20. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #75: gl.getUniform(samplerProgram, s2DValLoc) should be 0. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #76: gl.getUniform(samplerProgram, sCubeValLoc) should be 1. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #79: gl.getUniform(matProgram, mval2Loc) should be 1,2,3,4. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #80: gl.getUniform(matProgram, mval3Loc) should be 5,6,7,8,9,10,11,12,13. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #81: gl.getUniform(matProgram, mval4Loc) should be 14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29. Threw exception TypeError: gl.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[gl-uniform-arrays.html]
|
||||
expected: ERROR
|
||||
[Overall test]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[uniform-default-values.html]
|
||||
expected: ERROR
|
||||
[Overall test]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,25 +1,7 @@
|
|||
[uniform-location.html]
|
||||
[WebGL test #9: contextA.getUniform(programS, locationSx) should be 333. Threw exception TypeError: contextA.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #10: contextA.getUniform(programS, locationArray0) should be 4. Threw exception TypeError: contextA.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #11: contextA.getUniform(programS, locationArray1) should be 5. Threw exception TypeError: contextA.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #14: contextA.getUniform(programV, locationVec4) should be 1,2,3,4. Threw exception TypeError: contextA.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #20: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.uniform1i(locationSx, 3)]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #21: contextA.getUniform(programS, locationSx) threw exception TypeError: contextA.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #24: contextA.getUniform(programS, locationSx) should be 3. Threw exception TypeError: contextA.getUniform is not a function]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #25: contextA.getUniform(programS, locationArray0) should be 123. Threw exception TypeError: contextA.getUniform is not a function]
|
||||
[WebGL test #21: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.getUniform(programS, locationSx)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,262 +1,259 @@
|
|||
[methods-2.html]
|
||||
[WebGL test #0: Property either does not exist or is not a function: getUniform]
|
||||
[WebGL test #0: Property either does not exist or is not a function: isContextLost]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #1: Property either does not exist or is not a function: isContextLost]
|
||||
[WebGL test #1: Property either does not exist or is not a function: getBufferSubData]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #2: Property either does not exist or is not a function: getBufferSubData]
|
||||
[WebGL test #2: Property either does not exist or is not a function: copyBufferSubData]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #3: Property either does not exist or is not a function: copyBufferSubData]
|
||||
[WebGL test #3: Property either does not exist or is not a function: blitFramebuffer]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #4: Property either does not exist or is not a function: blitFramebuffer]
|
||||
[WebGL test #4: Property either does not exist or is not a function: framebufferTextureLayer]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #5: Property either does not exist or is not a function: framebufferTextureLayer]
|
||||
[WebGL test #5: Property either does not exist or is not a function: getInternalformatParameter]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #6: Property either does not exist or is not a function: getInternalformatParameter]
|
||||
[WebGL test #6: Property either does not exist or is not a function: invalidateFramebuffer]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #7: Property either does not exist or is not a function: invalidateFramebuffer]
|
||||
[WebGL test #7: Property either does not exist or is not a function: invalidateSubFramebuffer]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #8: Property either does not exist or is not a function: invalidateSubFramebuffer]
|
||||
[WebGL test #8: Property either does not exist or is not a function: readBuffer]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #9: Property either does not exist or is not a function: readBuffer]
|
||||
[WebGL test #9: Property either does not exist or is not a function: renderbufferStorageMultisample]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #10: Property either does not exist or is not a function: renderbufferStorageMultisample]
|
||||
[WebGL test #10: Property either does not exist or is not a function: texImage3D]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #11: Property either does not exist or is not a function: texImage3D]
|
||||
[WebGL test #11: Property either does not exist or is not a function: texStorage2D]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #12: Property either does not exist or is not a function: texStorage2D]
|
||||
[WebGL test #12: Property either does not exist or is not a function: texStorage3D]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #13: Property either does not exist or is not a function: texStorage3D]
|
||||
[WebGL test #13: Property either does not exist or is not a function: texSubImage3D]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #14: Property either does not exist or is not a function: texSubImage3D]
|
||||
[WebGL test #14: Property either does not exist or is not a function: copyTexSubImage3D]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #15: Property either does not exist or is not a function: copyTexSubImage3D]
|
||||
[WebGL test #15: Property either does not exist or is not a function: compressedTexImage3D]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #16: Property either does not exist or is not a function: compressedTexImage3D]
|
||||
[WebGL test #16: Property either does not exist or is not a function: compressedTexSubImage3D]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #17: Property either does not exist or is not a function: compressedTexSubImage3D]
|
||||
[WebGL test #17: Property either does not exist or is not a function: getFragDataLocation]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #18: Property either does not exist or is not a function: getFragDataLocation]
|
||||
[WebGL test #18: Property either does not exist or is not a function: uniform1ui]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #19: Property either does not exist or is not a function: uniform1ui]
|
||||
[WebGL test #19: Property either does not exist or is not a function: uniform2ui]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #20: Property either does not exist or is not a function: uniform2ui]
|
||||
[WebGL test #20: Property either does not exist or is not a function: uniform3ui]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #21: Property either does not exist or is not a function: uniform3ui]
|
||||
[WebGL test #21: Property either does not exist or is not a function: uniform4ui]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #22: Property either does not exist or is not a function: uniform4ui]
|
||||
[WebGL test #22: Property either does not exist or is not a function: uniform1uiv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #23: Property either does not exist or is not a function: uniform1uiv]
|
||||
[WebGL test #23: Property either does not exist or is not a function: uniform2uiv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #24: Property either does not exist or is not a function: uniform2uiv]
|
||||
[WebGL test #24: Property either does not exist or is not a function: uniform3uiv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #25: Property either does not exist or is not a function: uniform3uiv]
|
||||
[WebGL test #25: Property either does not exist or is not a function: uniform4uiv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #26: Property either does not exist or is not a function: uniform4uiv]
|
||||
[WebGL test #26: Property either does not exist or is not a function: uniformMatrix2x3fv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #27: Property either does not exist or is not a function: uniformMatrix2x3fv]
|
||||
[WebGL test #27: Property either does not exist or is not a function: uniformMatrix3x2fv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #28: Property either does not exist or is not a function: uniformMatrix3x2fv]
|
||||
[WebGL test #28: Property either does not exist or is not a function: uniformMatrix2x4fv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #29: Property either does not exist or is not a function: uniformMatrix2x4fv]
|
||||
[WebGL test #29: Property either does not exist or is not a function: uniformMatrix4x2fv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #30: Property either does not exist or is not a function: uniformMatrix4x2fv]
|
||||
[WebGL test #30: Property either does not exist or is not a function: uniformMatrix3x4fv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #31: Property either does not exist or is not a function: uniformMatrix3x4fv]
|
||||
[WebGL test #31: Property either does not exist or is not a function: uniformMatrix4x3fv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #32: Property either does not exist or is not a function: uniformMatrix4x3fv]
|
||||
[WebGL test #32: Property either does not exist or is not a function: vertexAttribI4i]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #33: Property either does not exist or is not a function: vertexAttribI4i]
|
||||
[WebGL test #33: Property either does not exist or is not a function: vertexAttribI4iv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #34: Property either does not exist or is not a function: vertexAttribI4iv]
|
||||
[WebGL test #34: Property either does not exist or is not a function: vertexAttribI4ui]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #35: Property either does not exist or is not a function: vertexAttribI4ui]
|
||||
[WebGL test #35: Property either does not exist or is not a function: vertexAttribI4uiv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #36: Property either does not exist or is not a function: vertexAttribI4uiv]
|
||||
[WebGL test #36: Property either does not exist or is not a function: vertexAttribIPointer]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #37: Property either does not exist or is not a function: vertexAttribIPointer]
|
||||
[WebGL test #37: Property either does not exist or is not a function: drawRangeElements]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #38: Property either does not exist or is not a function: drawRangeElements]
|
||||
[WebGL test #38: Property either does not exist or is not a function: drawBuffers]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #39: Property either does not exist or is not a function: drawBuffers]
|
||||
[WebGL test #39: Property either does not exist or is not a function: clearBufferiv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #40: Property either does not exist or is not a function: clearBufferiv]
|
||||
[WebGL test #40: Property either does not exist or is not a function: clearBufferuiv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #41: Property either does not exist or is not a function: clearBufferuiv]
|
||||
[WebGL test #41: Property either does not exist or is not a function: clearBufferfv]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #42: Property either does not exist or is not a function: clearBufferfv]
|
||||
[WebGL test #42: Property either does not exist or is not a function: clearBufferfi]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #43: Property either does not exist or is not a function: clearBufferfi]
|
||||
[WebGL test #43: Property either does not exist or is not a function: createQuery]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #44: Property either does not exist or is not a function: createQuery]
|
||||
[WebGL test #44: Property either does not exist or is not a function: deleteQuery]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #45: Property either does not exist or is not a function: deleteQuery]
|
||||
[WebGL test #45: Property either does not exist or is not a function: isQuery]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #46: Property either does not exist or is not a function: isQuery]
|
||||
[WebGL test #46: Property either does not exist or is not a function: beginQuery]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #47: Property either does not exist or is not a function: beginQuery]
|
||||
[WebGL test #47: Property either does not exist or is not a function: endQuery]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #48: Property either does not exist or is not a function: endQuery]
|
||||
[WebGL test #48: Property either does not exist or is not a function: getQuery]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #49: Property either does not exist or is not a function: getQuery]
|
||||
[WebGL test #49: Property either does not exist or is not a function: getQueryParameter]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #50: Property either does not exist or is not a function: getQueryParameter]
|
||||
[WebGL test #50: Property either does not exist or is not a function: createSampler]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #51: Property either does not exist or is not a function: createSampler]
|
||||
[WebGL test #51: Property either does not exist or is not a function: deleteSampler]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #52: Property either does not exist or is not a function: deleteSampler]
|
||||
[WebGL test #52: Property either does not exist or is not a function: isSampler]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #53: Property either does not exist or is not a function: isSampler]
|
||||
[WebGL test #53: Property either does not exist or is not a function: bindSampler]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #54: Property either does not exist or is not a function: bindSampler]
|
||||
[WebGL test #54: Property either does not exist or is not a function: samplerParameteri]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #55: Property either does not exist or is not a function: samplerParameteri]
|
||||
[WebGL test #55: Property either does not exist or is not a function: samplerParameterf]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #56: Property either does not exist or is not a function: samplerParameterf]
|
||||
[WebGL test #56: Property either does not exist or is not a function: getSamplerParameter]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #57: Property either does not exist or is not a function: getSamplerParameter]
|
||||
[WebGL test #57: Property either does not exist or is not a function: fenceSync]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #58: Property either does not exist or is not a function: fenceSync]
|
||||
[WebGL test #58: Property either does not exist or is not a function: isSync]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #59: Property either does not exist or is not a function: isSync]
|
||||
[WebGL test #59: Property either does not exist or is not a function: deleteSync]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #60: Property either does not exist or is not a function: deleteSync]
|
||||
[WebGL test #60: Property either does not exist or is not a function: clientWaitSync]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #61: Property either does not exist or is not a function: clientWaitSync]
|
||||
[WebGL test #61: Property either does not exist or is not a function: waitSync]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #62: Property either does not exist or is not a function: waitSync]
|
||||
[WebGL test #62: Property either does not exist or is not a function: getSyncParameter]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #63: Property either does not exist or is not a function: getSyncParameter]
|
||||
[WebGL test #63: Property either does not exist or is not a function: createTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #64: Property either does not exist or is not a function: createTransformFeedback]
|
||||
[WebGL test #64: Property either does not exist or is not a function: deleteTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #65: Property either does not exist or is not a function: deleteTransformFeedback]
|
||||
[WebGL test #65: Property either does not exist or is not a function: isTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #66: Property either does not exist or is not a function: isTransformFeedback]
|
||||
[WebGL test #66: Property either does not exist or is not a function: bindTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #67: Property either does not exist or is not a function: bindTransformFeedback]
|
||||
[WebGL test #67: Property either does not exist or is not a function: beginTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #68: Property either does not exist or is not a function: beginTransformFeedback]
|
||||
[WebGL test #68: Property either does not exist or is not a function: endTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #69: Property either does not exist or is not a function: endTransformFeedback]
|
||||
[WebGL test #69: Property either does not exist or is not a function: transformFeedbackVaryings]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #70: Property either does not exist or is not a function: transformFeedbackVaryings]
|
||||
[WebGL test #70: Property either does not exist or is not a function: getTransformFeedbackVarying]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #71: Property either does not exist or is not a function: getTransformFeedbackVarying]
|
||||
[WebGL test #71: Property either does not exist or is not a function: pauseTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #72: Property either does not exist or is not a function: pauseTransformFeedback]
|
||||
[WebGL test #72: Property either does not exist or is not a function: resumeTransformFeedback]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #73: Property either does not exist or is not a function: resumeTransformFeedback]
|
||||
[WebGL test #73: Property either does not exist or is not a function: bindBufferBase]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #74: Property either does not exist or is not a function: bindBufferBase]
|
||||
[WebGL test #74: Property either does not exist or is not a function: bindBufferRange]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #75: Property either does not exist or is not a function: bindBufferRange]
|
||||
[WebGL test #75: Property either does not exist or is not a function: getIndexedParameter]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #76: Property either does not exist or is not a function: getIndexedParameter]
|
||||
[WebGL test #76: Property either does not exist or is not a function: getUniformIndices]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #77: Property either does not exist or is not a function: getUniformIndices]
|
||||
[WebGL test #77: Property either does not exist or is not a function: getActiveUniforms]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #78: Property either does not exist or is not a function: getActiveUniforms]
|
||||
[WebGL test #78: Property either does not exist or is not a function: getUniformBlockIndex]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #79: Property either does not exist or is not a function: getUniformBlockIndex]
|
||||
[WebGL test #79: Property either does not exist or is not a function: getActiveUniformBlockParameter]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #80: Property either does not exist or is not a function: getActiveUniformBlockParameter]
|
||||
[WebGL test #80: Property either does not exist or is not a function: getActiveUniformBlockName]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #81: Property either does not exist or is not a function: getActiveUniformBlockName]
|
||||
[WebGL test #81: Property either does not exist or is not a function: uniformBlockBinding]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #82: Property either does not exist or is not a function: uniformBlockBinding]
|
||||
[WebGL test #82: Property either does not exist or is not a function: createVertexArray]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #83: Property either does not exist or is not a function: createVertexArray]
|
||||
[WebGL test #83: Property either does not exist or is not a function: deleteVertexArray]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #84: Property either does not exist or is not a function: deleteVertexArray]
|
||||
[WebGL test #84: Property either does not exist or is not a function: isVertexArray]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #85: Property either does not exist or is not a function: isVertexArray]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #86: Property either does not exist or is not a function: bindVertexArray]
|
||||
[WebGL test #85: Property either does not exist or is not a function: bindVertexArray]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue