Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: core/win/d3d9/texture_d3d9.cc

Issue 150058: expose bitmap in js. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « core/win/d3d9/texture_d3d9.h ('k') | plugin/idl/bitmap.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2009, Google Inc. 2 * Copyright 2009, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 : Texture2D(service_locator, 224 : Texture2D(service_locator,
225 bitmap.width(), 225 bitmap.width(),
226 bitmap.height(), 226 bitmap.height(),
227 bitmap.format(), 227 bitmap.format(),
228 bitmap.num_mipmaps(), 228 bitmap.num_mipmaps(),
229 bitmap.CheckAlphaIsOne(), 229 bitmap.CheckAlphaIsOne(),
230 resize_to_pot, 230 resize_to_pot,
231 enable_render_surfaces), 231 enable_render_surfaces),
232 d3d_texture_(tex) { 232 d3d_texture_(tex) {
233 DCHECK(tex); 233 DCHECK(tex);
234 backing_bitmap_ = Bitmap::Ref(new Bitmap(service_locator));
234 } 235 }
235 236
236 // Attempts to create a IDirect3DTexture9 with the given specs. If the creation 237 // Attempts to create a IDirect3DTexture9 with the given specs. If the creation
237 // of the texture succeeds then it creates a Texture2DD3D9 object around it and 238 // of the texture succeeds then it creates a Texture2DD3D9 object around it and
238 // returns it. This is the safe way to create a Texture2DD3D9 object that 239 // returns it. This is the safe way to create a Texture2DD3D9 object that
239 // contains a valid D3D9 texture. 240 // contains a valid D3D9 texture.
240 Texture2DD3D9* Texture2DD3D9::Create(ServiceLocator* service_locator, 241 Texture2DD3D9* Texture2DD3D9::Create(ServiceLocator* service_locator,
241 Bitmap* bitmap, 242 Bitmap* bitmap,
242 RendererD3D9* renderer, 243 RendererD3D9* renderer,
243 bool enable_render_surfaces) { 244 bool enable_render_surfaces) {
(...skipping 12 matching lines...) Expand all
256 DLOG(ERROR) << "Failed to create Texture2D (D3D9) : "; 257 DLOG(ERROR) << "Failed to create Texture2D (D3D9) : ";
257 return NULL; 258 return NULL;
258 } 259 }
259 260
260 Texture2DD3D9 *texture = new Texture2DD3D9(service_locator, 261 Texture2DD3D9 *texture = new Texture2DD3D9(service_locator,
261 d3d_texture, 262 d3d_texture,
262 *bitmap, 263 *bitmap,
263 resize_to_pot, 264 resize_to_pot,
264 enable_render_surfaces); 265 enable_render_surfaces);
265 266
266 texture->backing_bitmap_.SetFrom(bitmap); 267 texture->backing_bitmap_->SetFrom(bitmap);
267 if (texture->backing_bitmap_.image_data()) { 268 if (texture->backing_bitmap_->image_data()) {
268 for (unsigned int i = 0; i < bitmap->num_mipmaps(); ++i) { 269 for (unsigned int i = 0; i < bitmap->num_mipmaps(); ++i) {
269 if (!texture->UpdateBackedMipLevel(i)) { 270 if (!texture->UpdateBackedMipLevel(i)) {
270 DLOG(ERROR) << "Failed to upload bitmap to texture."; 271 DLOG(ERROR) << "Failed to upload bitmap to texture.";
271 delete texture; 272 delete texture;
272 return NULL; 273 return NULL;
273 } 274 }
274 mip_width = std::max(1U, mip_width >> 1); 275 mip_width = std::max(1U, mip_width >> 1);
275 mip_height = std::max(1U, mip_height >> 1); 276 mip_height = std::max(1U, mip_height >> 1);
276 } 277 }
277 if (!resize_to_pot) 278 if (!resize_to_pot)
278 texture->backing_bitmap_.FreeData(); 279 texture->backing_bitmap_->FreeData();
279 } else { 280 } else {
280 if (resize_to_pot) { 281 if (resize_to_pot) {
281 texture->backing_bitmap_.AllocateData(); 282 texture->backing_bitmap_->AllocateData();
282 memset(texture->backing_bitmap_.image_data(), 0, 283 memset(texture->backing_bitmap_->image_data(), 0,
283 texture->backing_bitmap_.GetTotalSize()); 284 texture->backing_bitmap_->GetTotalSize());
284 } 285 }
285 } 286 }
286 287
287 return texture; 288 return texture;
288 } 289 }
289 290
290 // Destructor releases the D3D9 texture resource. 291 // Destructor releases the D3D9 texture resource.
291 Texture2DD3D9::~Texture2DD3D9() { 292 Texture2DD3D9::~Texture2DD3D9() {
292 d3d_texture_ = NULL; 293 d3d_texture_ = NULL;
293 } 294 }
294 295
295 bool Texture2DD3D9::UpdateBackedMipLevel(unsigned int level) { 296 bool Texture2DD3D9::UpdateBackedMipLevel(unsigned int level) {
296 DCHECK_LT(level, static_cast<unsigned int>(levels())); 297 DCHECK_LT(level, static_cast<unsigned int>(levels()));
297 DCHECK(backing_bitmap_.image_data()); 298 DCHECK(backing_bitmap_->image_data());
298 DCHECK_EQ(backing_bitmap_.width(), width()); 299 DCHECK_EQ(backing_bitmap_->width(), width());
299 DCHECK_EQ(backing_bitmap_.height(), height()); 300 DCHECK_EQ(backing_bitmap_->height(), height());
300 DCHECK_EQ(backing_bitmap_.format(), format()); 301 DCHECK_EQ(backing_bitmap_->format(), format());
301 DCHECK_EQ(backing_bitmap_.num_mipmaps(), levels()); 302 DCHECK_EQ(backing_bitmap_->num_mipmaps(), levels());
302 303
303 unsigned int mip_width = std::max(1, width() >> level); 304 unsigned int mip_width = std::max(1, width() >> level);
304 unsigned int mip_height = std::max(1, height() >> level); 305 unsigned int mip_height = std::max(1, height() >> level);
305 unsigned int rect_width = mip_width; 306 unsigned int rect_width = mip_width;
306 unsigned int rect_height = mip_height; 307 unsigned int rect_height = mip_height;
307 if (resize_to_pot_) { 308 if (resize_to_pot_) {
308 rect_width = std::max(1U, Bitmap::GetPOTSize(width()) >> level); 309 rect_width = std::max(1U, Bitmap::GetPOTSize(width()) >> level);
309 rect_height = std::max(1U, Bitmap::GetPOTSize(height()) >> level); 310 rect_height = std::max(1U, Bitmap::GetPOTSize(height()) >> level);
310 } 311 }
311 312
312 RECT rect = {0, 0, rect_width, rect_height}; 313 RECT rect = {0, 0, rect_width, rect_height};
313 D3DLOCKED_RECT out_rect; 314 D3DLOCKED_RECT out_rect;
314 out_rect.pBits = 0; 315 out_rect.pBits = 0;
315 316
316 if (!HR(d3d_texture_->LockRect(level, &out_rect, &rect, 0))) { 317 if (!HR(d3d_texture_->LockRect(level, &out_rect, &rect, 0))) {
317 DLOG(ERROR) << "Failed to lock texture level " << level << "."; 318 DLOG(ERROR) << "Failed to lock texture level " << level << ".";
318 return false; 319 return false;
319 } 320 }
320 321
321 DCHECK(out_rect.pBits); 322 DCHECK(out_rect.pBits);
322 // TODO: check that the returned pitch is what we expect. 323 // TODO: check that the returned pitch is what we expect.
323 324
324 const unsigned char *mip_data = 325 const unsigned char *mip_data =
325 backing_bitmap_.GetMipData(level, TextureCUBE::FACE_POSITIVE_X); 326 backing_bitmap_->GetMipData(level, TextureCUBE::FACE_POSITIVE_X);
326 if (resize_to_pot_) { 327 if (resize_to_pot_) {
327 Bitmap::Scale(mip_width, mip_height, format(), mip_data, 328 Bitmap::Scale(mip_width, mip_height, format(), mip_data,
328 rect_width, rect_height, 329 rect_width, rect_height,
329 static_cast<unsigned char *>(out_rect.pBits)); 330 static_cast<unsigned char *>(out_rect.pBits));
330 } else { 331 } else {
331 unsigned int mip_size = 332 unsigned int mip_size =
332 Bitmap::GetBufferSize(mip_width, mip_height, format()); 333 Bitmap::GetBufferSize(mip_width, mip_height, format());
333 memcpy(out_rect.pBits, mip_data, mip_size); 334 memcpy(out_rect.pBits, mip_data, mip_size);
334 } 335 }
335 336
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 << "Level " << level << " of texture \"" << name() 387 << "Level " << level << " of texture \"" << name()
387 << "\" is already locked."; 388 << "\" is already locked.";
388 return false; 389 return false;
389 } 390 }
390 if (render_surfaces_enabled()) { 391 if (render_surfaces_enabled()) {
391 O3D_ERROR(service_locator()) 392 O3D_ERROR(service_locator())
392 << "Attempting to lock a render-target texture: " << name(); 393 << "Attempting to lock a render-target texture: " << name();
393 return false; 394 return false;
394 } 395 }
395 if (resize_to_pot_) { 396 if (resize_to_pot_) {
396 DCHECK(backing_bitmap_.image_data()); 397 DCHECK(backing_bitmap_->image_data());
397 *texture_data = backing_bitmap_.GetMipData(level, 398 *texture_data = backing_bitmap_->GetMipData(level,
398 TextureCUBE::FACE_POSITIVE_X); 399 TextureCUBE::FACE_POSITIVE_X);
399 locked_levels_ |= 1 << level; 400 locked_levels_ |= 1 << level;
400 return true; 401 return true;
401 } else { 402 } else {
402 RECT rect = {0, 0, width(), height()}; 403 RECT rect = {0, 0, width(), height()};
403 D3DLOCKED_RECT out_rect = {0}; 404 D3DLOCKED_RECT out_rect = {0};
404 405
405 if (HR(d3d_texture_->LockRect(level, &out_rect, &rect, 0))) { 406 if (HR(d3d_texture_->LockRect(level, &out_rect, &rect, 0))) {
406 *texture_data = out_rect.pBits; 407 *texture_data = out_rect.pBits;
407 locked_levels_ |= 1 << level; 408 locked_levels_ |= 1 << level;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 } 453 }
453 454
454 bool Texture2DD3D9::OnResetDevice() { 455 bool Texture2DD3D9::OnResetDevice() {
455 if (render_surfaces_enabled()) { 456 if (render_surfaces_enabled()) {
456 DCHECK(d3d_texture_ == NULL); 457 DCHECK(d3d_texture_ == NULL);
457 Renderer* renderer = service_locator()->GetService<Renderer>(); 458 Renderer* renderer = service_locator()->GetService<Renderer>();
458 RendererD3D9 *renderer_d3d9 = down_cast<RendererD3D9*>(renderer); 459 RendererD3D9 *renderer_d3d9 = down_cast<RendererD3D9*>(renderer);
459 bool resize_to_pot; 460 bool resize_to_pot;
460 unsigned int mip_width, mip_height; 461 unsigned int mip_width, mip_height;
461 return HR(CreateTexture2DD3D9(renderer_d3d9, 462 return HR(CreateTexture2DD3D9(renderer_d3d9,
462 &backing_bitmap_, 463 backing_bitmap_,
463 render_surfaces_enabled(), 464 render_surfaces_enabled(),
464 &resize_to_pot, 465 &resize_to_pot,
465 &mip_width, 466 &mip_width,
466 &mip_height, 467 &mip_height,
467 &d3d_texture_)); 468 &d3d_texture_));
468 } 469 }
469 return true; 470 return true;
470 } 471 }
471 472
472 const Texture::RGBASwizzleIndices& Texture2DD3D9::GetABGR32FSwizzleIndices() { 473 const Texture::RGBASwizzleIndices& Texture2DD3D9::GetABGR32FSwizzleIndices() {
473 return g_d3d_abgr32f_swizzle_indices; 474 return g_d3d_abgr32f_swizzle_indices;
474 } 475 }
475 476
476 // Constructs a cube texture object from the given (existing) D3D Cube texture. 477 // Constructs a cube texture object from the given (existing) D3D Cube texture.
477 TextureCUBED3D9::TextureCUBED3D9(ServiceLocator* service_locator, 478 TextureCUBED3D9::TextureCUBED3D9(ServiceLocator* service_locator,
478 IDirect3DCubeTexture9* tex, 479 IDirect3DCubeTexture9* tex,
479 const Bitmap& bitmap, 480 const Bitmap& bitmap,
480 bool resize_to_pot, 481 bool resize_to_pot,
481 bool enable_render_surfaces) 482 bool enable_render_surfaces)
482 : TextureCUBE(service_locator, 483 : TextureCUBE(service_locator,
483 bitmap.width(), 484 bitmap.width(),
484 bitmap.format(), 485 bitmap.format(),
485 bitmap.num_mipmaps(), 486 bitmap.num_mipmaps(),
486 bitmap.CheckAlphaIsOne(), 487 bitmap.CheckAlphaIsOne(),
487 resize_to_pot, 488 resize_to_pot,
488 enable_render_surfaces), 489 enable_render_surfaces),
489 d3d_cube_texture_(tex) { 490 d3d_cube_texture_(tex) {
491 backing_bitmap_ = Bitmap::Ref(new Bitmap(service_locator));
490 } 492 }
491 493
492 // Attempts to create a D3D9 CubeTexture with the given specs. If creation 494 // Attempts to create a D3D9 CubeTexture with the given specs. If creation
493 // fails the method returns NULL. Otherwise, it wraps around the newly created 495 // fails the method returns NULL. Otherwise, it wraps around the newly created
494 // texture a TextureCUBED3D9 object and returns a pointer to it. 496 // texture a TextureCUBED3D9 object and returns a pointer to it.
495 TextureCUBED3D9* TextureCUBED3D9::Create(ServiceLocator* service_locator, 497 TextureCUBED3D9* TextureCUBED3D9::Create(ServiceLocator* service_locator,
496 Bitmap *bitmap, 498 Bitmap *bitmap,
497 RendererD3D9 *renderer, 499 RendererD3D9 *renderer,
498 bool enable_render_surfaces) { 500 bool enable_render_surfaces) {
499 DCHECK_NE(bitmap->format(), Texture::UNKNOWN_FORMAT); 501 DCHECK_NE(bitmap->format(), Texture::UNKNOWN_FORMAT);
(...skipping 12 matching lines...) Expand all
512 DLOG(ERROR) << "Failed to create TextureCUBE (D3D9)"; 514 DLOG(ERROR) << "Failed to create TextureCUBE (D3D9)";
513 return NULL; 515 return NULL;
514 } 516 }
515 517
516 TextureCUBED3D9 *texture = new TextureCUBED3D9(service_locator, 518 TextureCUBED3D9 *texture = new TextureCUBED3D9(service_locator,
517 d3d_texture, 519 d3d_texture,
518 *bitmap, 520 *bitmap,
519 resize_to_pot, 521 resize_to_pot,
520 enable_render_surfaces); 522 enable_render_surfaces);
521 523
522 texture->backing_bitmap_.SetFrom(bitmap); 524 texture->backing_bitmap_->SetFrom(bitmap);
523 if (texture->backing_bitmap_.image_data()) { 525 if (texture->backing_bitmap_->image_data()) {
524 for (int face = 0; face < 6; ++face) { 526 for (int face = 0; face < 6; ++face) {
525 unsigned int mip_edge = edge; 527 unsigned int mip_edge = edge;
526 for (unsigned int i = 0; i < bitmap->num_mipmaps(); ++i) { 528 for (unsigned int i = 0; i < bitmap->num_mipmaps(); ++i) {
527 if (!texture->UpdateBackedMipLevel(i, static_cast<CubeFace>(face))) { 529 if (!texture->UpdateBackedMipLevel(i, static_cast<CubeFace>(face))) {
528 DLOG(ERROR) << "Failed to upload bitmap to texture."; 530 DLOG(ERROR) << "Failed to upload bitmap to texture.";
529 delete texture; 531 delete texture;
530 return NULL; 532 return NULL;
531 } 533 }
532 mip_edge = std::max(1U, mip_edge >> 1); 534 mip_edge = std::max(1U, mip_edge >> 1);
533 } 535 }
534 } 536 }
535 if (!resize_to_pot) 537 if (!resize_to_pot)
536 texture->backing_bitmap_.FreeData(); 538 texture->backing_bitmap_->FreeData();
537 } else { 539 } else {
538 if (resize_to_pot) { 540 if (resize_to_pot) {
539 texture->backing_bitmap_.AllocateData(); 541 texture->backing_bitmap_->AllocateData();
540 memset(texture->backing_bitmap_.image_data(), 0, 542 memset(texture->backing_bitmap_->image_data(), 0,
541 texture->backing_bitmap_.GetTotalSize()); 543 texture->backing_bitmap_->GetTotalSize());
542 } 544 }
543 } 545 }
544 546
545 return texture; 547 return texture;
546 } 548 }
547 549
548 550
549 551
550 // Destructor releases the D3D9 texture resource. 552 // Destructor releases the D3D9 texture resource.
551 TextureCUBED3D9::~TextureCUBED3D9() { 553 TextureCUBED3D9::~TextureCUBED3D9() {
552 for (unsigned int i = 0; i < 6; ++i) { 554 for (unsigned int i = 0; i < 6; ++i) {
553 if (locked_levels_[i] != 0) { 555 if (locked_levels_[i] != 0) {
554 O3D_ERROR(service_locator()) 556 O3D_ERROR(service_locator())
555 << "TextureCUBE \"" << name() << "\" was never unlocked before " 557 << "TextureCUBE \"" << name() << "\" was never unlocked before "
556 << "being destroyed."; 558 << "being destroyed.";
557 break; // No need to report it more than once. 559 break; // No need to report it more than once.
558 } 560 }
559 } 561 }
560 d3d_cube_texture_ = NULL; 562 d3d_cube_texture_ = NULL;
561 } 563 }
562 564
563 bool TextureCUBED3D9::UpdateBackedMipLevel(unsigned int level, 565 bool TextureCUBED3D9::UpdateBackedMipLevel(unsigned int level,
564 TextureCUBE::CubeFace face) { 566 TextureCUBE::CubeFace face) {
565 DCHECK_LT(level, static_cast<unsigned int>(levels())); 567 DCHECK_LT(level, static_cast<unsigned int>(levels()));
566 DCHECK(backing_bitmap_.image_data()); 568 DCHECK(backing_bitmap_->image_data());
567 DCHECK(backing_bitmap_.is_cubemap()); 569 DCHECK(backing_bitmap_->is_cubemap());
568 DCHECK_EQ(backing_bitmap_.width(), edge_length()); 570 DCHECK_EQ(backing_bitmap_->width(), edge_length());
569 DCHECK_EQ(backing_bitmap_.height(), edge_length()); 571 DCHECK_EQ(backing_bitmap_->height(), edge_length());
570 DCHECK_EQ(backing_bitmap_.format(), format()); 572 DCHECK_EQ(backing_bitmap_->format(), format());
571 DCHECK_EQ(backing_bitmap_.num_mipmaps(), levels()); 573 DCHECK_EQ(backing_bitmap_->num_mipmaps(), levels());
572 574
573 unsigned int mip_edge = std::max(1, edge_length() >> level); 575 unsigned int mip_edge = std::max(1, edge_length() >> level);
574 unsigned int rect_edge = mip_edge; 576 unsigned int rect_edge = mip_edge;
575 if (resize_to_pot_) { 577 if (resize_to_pot_) {
576 rect_edge = std::max(1U, Bitmap::GetPOTSize(edge_length()) >> level); 578 rect_edge = std::max(1U, Bitmap::GetPOTSize(edge_length()) >> level);
577 } 579 }
578 580
579 RECT rect = {0, 0, rect_edge, rect_edge}; 581 RECT rect = {0, 0, rect_edge, rect_edge};
580 D3DLOCKED_RECT out_rect; 582 D3DLOCKED_RECT out_rect;
581 out_rect.pBits = 0; 583 out_rect.pBits = 0;
582 584
583 if (!HR(d3d_cube_texture_->LockRect(DX9CubeFace(face), level, &out_rect, 585 if (!HR(d3d_cube_texture_->LockRect(DX9CubeFace(face), level, &out_rect,
584 &rect, 0))) { 586 &rect, 0))) {
585 O3D_ERROR(service_locator()) 587 O3D_ERROR(service_locator())
586 << "Failed to lock texture level " << level << " face " << face << "."; 588 << "Failed to lock texture level " << level << " face " << face << ".";
587 return false; 589 return false;
588 } 590 }
589 591
590 DCHECK(out_rect.pBits); 592 DCHECK(out_rect.pBits);
591 // TODO: check that the returned pitch is what we expect. 593 // TODO: check that the returned pitch is what we expect.
592 594
593 const unsigned char *mip_data = backing_bitmap_.GetMipData(level, face); 595 const unsigned char *mip_data = backing_bitmap_->GetMipData(level, face);
594 if (resize_to_pot_) { 596 if (resize_to_pot_) {
595 Bitmap::Scale(mip_edge, mip_edge, format(), mip_data, 597 Bitmap::Scale(mip_edge, mip_edge, format(), mip_data,
596 rect_edge, rect_edge, 598 rect_edge, rect_edge,
597 static_cast<unsigned char *>(out_rect.pBits)); 599 static_cast<unsigned char *>(out_rect.pBits));
598 } else { 600 } else {
599 unsigned int mip_size = 601 unsigned int mip_size =
600 Bitmap::GetBufferSize(mip_edge, mip_edge, format()); 602 Bitmap::GetBufferSize(mip_edge, mip_edge, format());
601 memcpy(out_rect.pBits, mip_data, mip_size); 603 memcpy(out_rect.pBits, mip_data, mip_size);
602 } 604 }
603 605
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 << "Level " << level << " Face " << face << " of texture \"" << name() 659 << "Level " << level << " Face " << face << " of texture \"" << name()
658 << "\" is already locked."; 660 << "\" is already locked.";
659 return false; 661 return false;
660 } 662 }
661 if (render_surfaces_enabled()) { 663 if (render_surfaces_enabled()) {
662 O3D_ERROR(service_locator()) 664 O3D_ERROR(service_locator())
663 << "Attempting to lock a render-target texture: " << name(); 665 << "Attempting to lock a render-target texture: " << name();
664 return false; 666 return false;
665 } 667 }
666 if (resize_to_pot_) { 668 if (resize_to_pot_) {
667 DCHECK(backing_bitmap_.image_data()); 669 DCHECK(backing_bitmap_->image_data());
668 *texture_data = backing_bitmap_.GetMipData(level, face); 670 *texture_data = backing_bitmap_->GetMipData(level, face);
669 locked_levels_[face] |= 1 << level; 671 locked_levels_[face] |= 1 << level;
670 return true; 672 return true;
671 } else { 673 } else {
672 RECT rect = {0, 0, edge_length(), edge_length()}; 674 RECT rect = {0, 0, edge_length(), edge_length()};
673 D3DLOCKED_RECT out_rect = {0}; 675 D3DLOCKED_RECT out_rect = {0};
674 676
675 if (HR(d3d_cube_texture_->LockRect(DX9CubeFace(face), level, 677 if (HR(d3d_cube_texture_->LockRect(DX9CubeFace(face), level,
676 &out_rect, &rect, 0))) { 678 &out_rect, &rect, 0))) {
677 *texture_data = out_rect.pBits; 679 *texture_data = out_rect.pBits;
678 locked_levels_[face] |= 1 << level; 680 locked_levels_[face] |= 1 << level;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 } 726 }
725 727
726 bool TextureCUBED3D9::OnResetDevice() { 728 bool TextureCUBED3D9::OnResetDevice() {
727 if (render_surfaces_enabled()) { 729 if (render_surfaces_enabled()) {
728 DCHECK(d3d_cube_texture_ == NULL); 730 DCHECK(d3d_cube_texture_ == NULL);
729 Renderer* renderer = service_locator()->GetService<Renderer>(); 731 Renderer* renderer = service_locator()->GetService<Renderer>();
730 RendererD3D9 *renderer_d3d9 = down_cast<RendererD3D9*>(renderer); 732 RendererD3D9 *renderer_d3d9 = down_cast<RendererD3D9*>(renderer);
731 bool resize_to_pot; 733 bool resize_to_pot;
732 unsigned int mip_edge; 734 unsigned int mip_edge;
733 return HR(CreateTextureCUBED3D9(renderer_d3d9, 735 return HR(CreateTextureCUBED3D9(renderer_d3d9,
734 &backing_bitmap_, 736 backing_bitmap_,
735 render_surfaces_enabled(), 737 render_surfaces_enabled(),
736 &resize_to_pot, 738 &resize_to_pot,
737 &mip_edge, 739 &mip_edge,
738 &d3d_cube_texture_)); 740 &d3d_cube_texture_));
739 } 741 }
740 return true; 742 return true;
741 } 743 }
742 744
743 const Texture::RGBASwizzleIndices& TextureCUBED3D9::GetABGR32FSwizzleIndices() { 745 const Texture::RGBASwizzleIndices& TextureCUBED3D9::GetABGR32FSwizzleIndices() {
744 return g_d3d_abgr32f_swizzle_indices; 746 return g_d3d_abgr32f_swizzle_indices;
745 } 747 }
746 748
747 } // namespace o3d 749 } // namespace o3d
OLDNEW
« no previous file with comments | « core/win/d3d9/texture_d3d9.h ('k') | plugin/idl/bitmap.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698