Fix performance regression on HTML5 WebGL

This commit is contained in:
Joshua Granick
2017-03-20 12:30:15 -07:00
parent 5a81a03880
commit 8e7dfd9cb3

View File

@@ -1004,10 +1004,10 @@ class HTML5GLRenderContext {
//public function compressedTexImage2D (target:Int, level:Int, internalformat:Int, width:Int, height:Int, border:Int, offset:DataPointer):Void { //public function compressedTexImage2D (target:Int, level:Int, internalformat:Int, width:Int, height:Int, border:Int, offset:DataPointer):Void {
public function compressedTexImage2D (target:Int, level:Int, internalformat:Int, width:Int, height:Int, border:Int, imageSize:Dynamic, ?srcData:Dynamic, ?srcOffset:Int, ?srcLengthOverride:Int):Void { public function compressedTexImage2D (target:Int, level:Int, internalformat:Int, width:Int, height:Int, border:Int, imageSize:Dynamic, ?srcData:Dynamic, ?srcOffset:Int, ?srcLengthOverride:Int):Void {
srcData = __prepareData (null, srcData);
if (Std.is (imageSize, Int)) { if (Std.is (imageSize, Int)) {
srcData = __prepareData (null, srcData);
if (version > 1 && srcOffset != null) { if (version > 1 && srcOffset != null) {
__context.compressedTexImage2D (target, level, internalformat, width, height, border, srcData, srcOffset, srcLengthOverride); __context.compressedTexImage2D (target, level, internalformat, width, height, border, srcData, srcOffset, srcLengthOverride);
@@ -1050,10 +1050,10 @@ class HTML5GLRenderContext {
//public function compressedTexSubImage2D (target:Int, level:Int, xoffset:Int, yoffset:Int, width:Int, height:Int, format:Int, offset:DataPointer):Void { //public function compressedTexSubImage2D (target:Int, level:Int, xoffset:Int, yoffset:Int, width:Int, height:Int, format:Int, offset:DataPointer):Void {
public function compressedTexSubImage2D (target:Int, level:Int, xoffset:Int, yoffset:Int, width:Int, height:Int, format:Int, imageSize:Dynamic, ?srcData:Dynamic, ?srcOffset:Int, ?srcLengthOverride:Int):Void { public function compressedTexSubImage2D (target:Int, level:Int, xoffset:Int, yoffset:Int, width:Int, height:Int, format:Int, imageSize:Dynamic, ?srcData:Dynamic, ?srcOffset:Int, ?srcLengthOverride:Int):Void {
srcData = __prepareData (null, srcData);
if (Std.is (imageSize, Int)) { if (Std.is (imageSize, Int)) {
srcData = __prepareData (null, srcData);
if (version > 1 && srcOffset != null) { if (version > 1 && srcOffset != null) {
__context.compressedTexSubImage2D (target, level, xoffset, yoffset, width, height, format, srcData, srcOffset, srcLengthOverride); __context.compressedTexSubImage2D (target, level, xoffset, yoffset, width, height, format, srcData, srcOffset, srcLengthOverride);
@@ -3531,7 +3531,11 @@ class HTML5GLRenderContext {
if (data != null) { if (data != null) {
if (data == 0) return null; #if js
untyped __js__ ("if (!data) return null");
#else
if (Std.is (data, Float) && data == 0) return null;
#end
if (size != null) { if (size != null) {
@@ -3542,6 +3546,7 @@ class HTML5GLRenderContext {
} else if (__isArrayBufferView (data)) { } else if (__isArrayBufferView (data)) {
var arrayBufferView:ArrayBufferView = data; var arrayBufferView:ArrayBufferView = data;
if (arrayBufferView.byteLength == size) return data;
return new UInt8Array (arrayBufferView.buffer, arrayBufferView.byteOffset, size); return new UInt8Array (arrayBufferView.buffer, arrayBufferView.byteOffset, size);
} else if (Std.is (data, ArrayBuffer)) { } else if (Std.is (data, ArrayBuffer)) {