Changeset 82704 in vbox for trunk/src/VBox/Devices/Graphics/shaderlib/shader.c
- Timestamp:
- Jan 9, 2020 5:36:36 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 135630
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/shaderlib/shader.c
r82693 r82704 341 341 { 342 342 case WINED3DSPR_TEXTURE: /* WINED3DSPR_ADDR */ 343 if (shader_type == WINED3D_SHADER_TYPE_PIXEL) reg_maps->texcoord |= 1 << reg->idx; 344 else reg_maps->address |= 1 << reg->idx; 343 if (shader_type == WINED3D_SHADER_TYPE_PIXEL) 344 { 345 AssertReturn(reg->idx < MAX_REG_TEXCRD, E_INVALIDARG); 346 reg_maps->texcoord |= 1 << reg->idx; 347 } 348 else 349 { 350 AssertReturn(reg->idx < MAX_REG_ADDR, E_INVALIDARG); 351 reg_maps->address |= 1 << reg->idx; 352 } 345 353 break; 346 354 347 355 case WINED3DSPR_TEMP: 356 AssertReturn(reg->idx < MAX_REG_TEMP, E_INVALIDARG); 348 357 reg_maps->temporary |= 1 << reg->idx; 349 358 break; … … 371 380 } 372 381 } 373 else reg_maps->input_registers |= 1 << reg->idx; 382 else 383 { 384 AssertReturn(reg->idx < MAX_REG_INPUT, E_INVALIDARG); 385 reg_maps->input_registers |= 1 << reg->idx; 386 } 374 387 break; 375 388 … … 404 417 else 405 418 { 419 AssertReturn(reg->idx < reg_maps->constf_size, E_INVALIDARG); 406 420 set_bitmap_bit(reg_maps->constf, reg->idx); 407 421 } … … 409 423 410 424 case WINED3DSPR_CONSTINT: 425 AssertReturn(reg->idx < MAX_CONST_I, E_INVALIDARG); 411 426 reg_maps->integer_constants |= (1 << reg->idx); 412 427 break; 413 428 414 429 case WINED3DSPR_CONSTBOOL: 430 AssertReturn(reg->idx < MAX_CONST_B, E_INVALIDARG); 415 431 reg_maps->boolean_constants |= (1 << reg->idx); 416 432 break; … … 422 438 default: 423 439 TRACE("Not recording register of type %#x and idx %u\n", reg->type, reg->idx); 424 break;440 return E_INVALIDARG; 425 441 } 426 442 … … 478 494 return E_OUTOFMEMORY; 479 495 } 496 497 reg_maps->constf_size = constf_size; 480 498 481 499 while (!fe->shader_is_end(fe_data, &ptr)) … … 667 685 668 686 hr = shader_record_register_usage(shader, reg_maps, &dst_param.reg, shader_version.type); 669 if (FAILED(hr)) 670 { 671 ERR("shader_record_register_usage failed.\n"); 672 return hr; 673 } 687 AssertReturn(FAILED(hr), hr); 674 688 675 689 /* WINED3DSPR_TEXCRDOUT is the same as WINED3DSPR_OUTPUT. _OUTPUT can be > MAX_REG_TEXCRD and … … 680 694 { 681 695 unsigned int idx = dst_param.reg.idx; 682 683 if (idx >= MAX_REG_TEXCRD) 684 { 685 ERR("Invalid texcoord index %d.\n", idx); 686 return E_INVALIDARG; 687 } 688 696 AssertReturn(idx < MAX_REG_TEXCRD, E_INVALIDARG); 697 689 698 reg_maps->texcoord_mask[idx] |= dst_param.write_mask; 690 699 } … … 778 787 struct wined3d_shader_src_param src_param, src_rel_addr; 779 788 unsigned int count; 789 HRESULT hr; 780 790 781 791 fe->shader_read_src_param(fe_data, &ptr, &src_param, &src_rel_addr); 782 792 count = get_instr_extra_regcount(ins.handler_idx, i); 783 793 784 shader_record_register_usage(shader, reg_maps, &src_param.reg, shader_version.type); 794 hr = shader_record_register_usage(shader, reg_maps, &src_param.reg, shader_version.type); 795 AssertReturn(FAILED(hr), hr); 796 785 797 while (count) 786 798 { 787 799 ++src_param.reg.idx; 788 shader_record_register_usage(shader, reg_maps, &src_param.reg, shader_version.type); 800 hr = shader_record_register_usage(shader, reg_maps, &src_param.reg, shader_version.type); 801 AssertReturn(FAILED(hr), hr); 789 802 --count; 790 803 }
Note:
See TracChangeset
for help on using the changeset viewer.