@@ -15,7 +15,9 @@ defineSuite([
15
15
'use strict' ;
16
16
17
17
var validCompressed = new Uint8Array ( [ 171 , 75 , 84 , 88 , 32 , 49 , 49 , 187 , 13 , 10 , 26 , 10 , 1 , 2 , 3 , 4 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 241 , 131 , 0 , 0 , 8 , 25 , 0 , 0 , 4 , 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 0 , 224 , 7 , 224 , 7 , 0 , 0 , 0 , 0 ] ) ;
18
+ var validCompressedMipmap = new Uint8Array ( [ 171 , 75 , 84 , 88 , 32 , 49 , 49 , 187 , 13 , 10 , 26 , 10 , 1 , 2 , 3 , 4 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 100 , 141 , 0 , 0 , 7 , 25 , 0 , 0 , 4 , 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 52 , 0 , 0 , 0 , 19 , 0 , 0 , 0 , 67 , 82 , 78 , 76 , 73 , 66 , 95 , 70 , 79 , 85 , 82 , 67 , 67 , 0 , 69 , 84 , 67 , 49 , 0 , 0 , 23 , 0 , 0 , 0 , 75 , 84 , 88 , 111 , 114 , 105 , 101 , 110 , 116 , 97 , 116 , 105 , 111 , 110 , 0 , 83 , 61 , 114 , 44 , 84 , 61 , 100 , 0 , 0 , 8 , 0 , 0 , 0 , 255 , 0 , 0 , 0 , 255 , 255 , 0 , 0 , 8 , 0 , 0 , 0 , 255 , 0 , 0 , 0 , 255 , 255 , 0 , 0 , 8 , 0 , 0 , 0 , 255 , 0 , 0 , 0 , 255 , 255 , 0 , 0 ] ) ;
18
19
var validUncompressed = new Uint8Array ( [ 171 , 75 , 84 , 88 , 32 , 49 , 49 , 187 , 13 , 10 , 26 , 10 , 1 , 2 , 3 , 4 , 1 , 20 , 0 , 0 , 1 , 0 , 0 , 0 , 8 , 25 , 0 , 0 , 88 , 128 , 0 , 0 , 8 , 25 , 0 , 0 , 4 , 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 32 , 0 , 0 , 0 , 27 , 0 , 0 , 0 , 75 , 84 , 88 , 79 , 114 , 105 , 101 , 110 , 116 , 97 , 116 , 105 , 111 , 110 , 0 , 83 , 61 , 114 , 44 , 84 , 61 , 100 , 44 , 82 , 61 , 105 , 0 , 0 , 64 , 0 , 0 , 0 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 0 , 255 ] ) ;
20
+ var validUncompressedMipmap = new Uint8Array ( [ 171 , 75 , 84 , 88 , 32 , 49 , 49 , 187 , 13 , 10 , 26 , 10 , 1 , 2 , 3 , 4 , 1 , 20 , 0 , 0 , 1 , 0 , 0 , 0 , 7 , 25 , 0 , 0 , 81 , 128 , 0 , 0 , 7 , 25 , 0 , 0 , 4 , 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 52 , 0 , 0 , 0 , 19 , 0 , 0 , 0 , 67 , 82 , 78 , 76 , 73 , 66 , 95 , 70 , 79 , 85 , 82 , 67 , 67 , 0 , 82 , 71 , 66 , 120 , 0 , 0 , 23 , 0 , 0 , 0 , 75 , 84 , 88 , 111 , 114 , 105 , 101 , 110 , 116 , 97 , 116 , 105 , 111 , 110 , 0 , 83 , 61 , 114 , 44 , 84 , 61 , 100 , 0 , 0 , 48 , 0 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 12 , 0 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 255 , 0 , 0 , 3 , 0 , 0 , 0 , 255 , 0 , 0 , 0 ] ) ;
19
21
20
22
var fakeXHR ;
21
23
@@ -150,7 +152,34 @@ defineSuite([
150
152
expect ( rejectedError ) . toBeUndefined ( ) ;
151
153
} ) ;
152
154
153
- it ( 'returns a promise that resolves to an compressed texture when the request loads' , function ( ) {
155
+ it ( 'returns a promise that resolves to an uncompressed texture containing the first mip level of the original texture' , function ( ) {
156
+ var testUrl = 'http://example.invalid/testuri' ;
157
+ var promise = loadKTX ( testUrl ) ;
158
+
159
+ expect ( promise ) . toBeDefined ( ) ;
160
+
161
+ var resolvedValue ;
162
+ var rejectedError ;
163
+ promise . then ( function ( value ) {
164
+ resolvedValue = value ;
165
+ } , function ( error ) {
166
+ rejectedError = error ;
167
+ } ) ;
168
+
169
+ expect ( resolvedValue ) . toBeUndefined ( ) ;
170
+ expect ( rejectedError ) . toBeUndefined ( ) ;
171
+
172
+ var response = validUncompressedMipmap . buffer ;
173
+ fakeXHR . simulateLoad ( response ) ;
174
+ expect ( resolvedValue ) . toBeDefined ( ) ;
175
+ expect ( resolvedValue . width ) . toEqual ( 4 ) ;
176
+ expect ( resolvedValue . height ) . toEqual ( 4 ) ;
177
+ expect ( PixelFormat . isCompressedFormat ( resolvedValue . internalFormat ) ) . toEqual ( false ) ;
178
+ expect ( resolvedValue . bufferView ) . toBeDefined ( ) ;
179
+ expect ( rejectedError ) . toBeUndefined ( ) ;
180
+ } ) ;
181
+
182
+ it ( 'returns a promise that resolves to a compressed texture when the request loads' , function ( ) {
154
183
var testUrl = 'http://example.invalid/testuri' ;
155
184
var promise = loadKTX ( testUrl ) ;
156
185
@@ -177,6 +206,34 @@ defineSuite([
177
206
expect ( rejectedError ) . toBeUndefined ( ) ;
178
207
} ) ;
179
208
209
+ it ( 'returns a promise that resolves to a compressed texture containing the first mip level of the original texture' , function ( ) {
210
+ var testUrl = 'http://example.invalid/testuri' ;
211
+ var promise = loadKTX ( testUrl ) ;
212
+
213
+ expect ( promise ) . toBeDefined ( ) ;
214
+
215
+ var resolvedValue ;
216
+ var rejectedError ;
217
+ promise . then ( function ( value ) {
218
+ resolvedValue = value ;
219
+ } , function ( error ) {
220
+ rejectedError = error ;
221
+ } ) ;
222
+
223
+ expect ( resolvedValue ) . toBeUndefined ( ) ;
224
+ expect ( rejectedError ) . toBeUndefined ( ) ;
225
+
226
+ var response = validCompressedMipmap . buffer ;
227
+ fakeXHR . simulateLoad ( response ) ;
228
+ expect ( resolvedValue ) . toBeDefined ( ) ;
229
+ expect ( resolvedValue . width ) . toEqual ( 4 ) ;
230
+ expect ( resolvedValue . height ) . toEqual ( 4 ) ;
231
+ expect ( PixelFormat . isCompressedFormat ( resolvedValue . internalFormat ) ) . toEqual ( true ) ;
232
+ expect ( resolvedValue . bufferView ) . toBeDefined ( ) ;
233
+ expect ( rejectedError ) . toBeUndefined ( ) ;
234
+ } ) ;
235
+
236
+
180
237
it ( 'cannot parse invalid KTX buffer' , function ( ) {
181
238
var invalidKTX = new Uint8Array ( validCompressed ) ;
182
239
invalidKTX [ 0 ] = 0 ;
@@ -276,26 +333,6 @@ defineSuite([
276
333
expect ( rejectedError . message ) . toEqual ( 'The type size for compressed textures must be 1.' ) ;
277
334
} ) ;
278
335
279
- it ( 'cannot parse KTX buffer with compressed texture and needs to generate mipmaps' , function ( ) {
280
- var reinterprestBuffer = new Uint32Array ( validCompressed . buffer ) ;
281
- var invalidKTX = new Uint32Array ( reinterprestBuffer ) ;
282
- invalidKTX [ 14 ] = 0 ;
283
-
284
- var promise = loadKTX ( invalidKTX . buffer ) ;
285
-
286
- var resolvedValue ;
287
- var rejectedError ;
288
- promise . then ( function ( value ) {
289
- resolvedValue = value ;
290
- } , function ( error ) {
291
- rejectedError = error ;
292
- } ) ;
293
-
294
- expect ( resolvedValue ) . toBeUndefined ( ) ;
295
- expect ( rejectedError instanceof RuntimeError ) . toEqual ( true ) ;
296
- expect ( rejectedError . message ) . toEqual ( 'Generating mipmaps for a compressed texture is unsupported.' ) ;
297
- } ) ;
298
-
299
336
it ( 'cannot parse KTX buffer with uncompressed texture and base format is not the same as format' , function ( ) {
300
337
var reinterprestBuffer = new Uint32Array ( validUncompressed . buffer ) ;
301
338
var invalidKTX = new Uint32Array ( reinterprestBuffer ) ;
0 commit comments