@@ -405,6 +405,49 @@ static inline void prepareTextureForDownload(SDL_Texture *texture)
405
405
sceKernelDcacheInvalidateRange (psp_tex -> data , psp_tex -> size );
406
406
}
407
407
408
+ static inline void PSP_SetBlendMode (PSP_RenderData * data , PSP_BlendInfo blendInfo )
409
+ {
410
+ // Update the blend mode if necessary
411
+ if (data -> blendInfo .mode != blendInfo .mode ) {
412
+ switch (blendInfo .mode ) {
413
+ case SDL_BLENDMODE_NONE :
414
+ sceGuShadeModel (GU_SMOOTH );
415
+ sceGuTexFunc (GU_TFX_REPLACE , GU_TCC_RGBA );
416
+ sceGuDisable (GU_BLEND );
417
+ break ;
418
+ case SDL_BLENDMODE_BLEND :
419
+ sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
420
+ sceGuBlendFunc (GU_ADD , GU_SRC_ALPHA , GU_ONE_MINUS_SRC_ALPHA , 0 , 0 );
421
+ sceGuEnable (GU_BLEND );
422
+ break ;
423
+ case SDL_BLENDMODE_ADD :
424
+ sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
425
+ sceGuBlendFunc (GU_ADD , GU_SRC_ALPHA , GU_FIX , 0 , 0x00FFFFFF );
426
+ sceGuEnable (GU_BLEND );
427
+ break ;
428
+ case SDL_BLENDMODE_MOD :
429
+ sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
430
+ sceGuBlendFunc (GU_ADD , GU_FIX , GU_SRC_COLOR , 0 , 0 );
431
+ sceGuEnable (GU_BLEND );
432
+ break ;
433
+ case SDL_BLENDMODE_MUL :
434
+ sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
435
+ /* FIXME SDL_BLENDMODE_MUL is simplified, and dstA is in fact un-changed.*/
436
+ sceGuBlendFunc (GU_ADD , GU_DST_COLOR , GU_ONE_MINUS_SRC_ALPHA , 0 , 0 );
437
+ sceGuEnable (GU_BLEND );
438
+ break ;
439
+ }
440
+
441
+ data -> blendInfo .mode = blendInfo .mode ;
442
+ }
443
+
444
+ // Update shade model if needed
445
+ if (data -> blendInfo .shade != blendInfo .shade ) {
446
+ sceGuShadeModel (blendInfo .shade );
447
+ data -> blendInfo .shade = blendInfo .shade ;
448
+ }
449
+ }
450
+
408
451
static void PSP_WindowEvent (SDL_Renderer * renderer , const SDL_WindowEvent * event )
409
452
{
410
453
}
@@ -710,7 +753,7 @@ static int PSP_QueueCopy(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Tex
710
753
return 0 ;
711
754
}
712
755
713
- static int PSP_RenderSetViewPort (SDL_Renderer * renderer , SDL_RenderCommand * cmd )
756
+ static inline int PSP_RenderSetViewPort (SDL_Renderer * renderer , SDL_RenderCommand * cmd )
714
757
{
715
758
const SDL_Rect * viewport = & cmd -> data .viewport .rect ;
716
759
@@ -721,49 +764,6 @@ static int PSP_RenderSetViewPort(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
721
764
return 0 ;
722
765
}
723
766
724
- static void PSP_SetBlendMode (PSP_RenderData * data , PSP_BlendInfo blendInfo )
725
- {
726
- // Update the blend mode if necessary
727
- if (data -> blendInfo .mode != blendInfo .mode ) {
728
- switch (blendInfo .mode ) {
729
- case SDL_BLENDMODE_NONE :
730
- sceGuShadeModel (GU_SMOOTH );
731
- sceGuTexFunc (GU_TFX_REPLACE , GU_TCC_RGBA );
732
- sceGuDisable (GU_BLEND );
733
- break ;
734
- case SDL_BLENDMODE_BLEND :
735
- sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
736
- sceGuBlendFunc (GU_ADD , GU_SRC_ALPHA , GU_ONE_MINUS_SRC_ALPHA , 0 , 0 );
737
- sceGuEnable (GU_BLEND );
738
- break ;
739
- case SDL_BLENDMODE_ADD :
740
- sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
741
- sceGuBlendFunc (GU_ADD , GU_SRC_ALPHA , GU_FIX , 0 , 0x00FFFFFF );
742
- sceGuEnable (GU_BLEND );
743
- break ;
744
- case SDL_BLENDMODE_MOD :
745
- sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
746
- sceGuBlendFunc (GU_ADD , GU_FIX , GU_SRC_COLOR , 0 , 0 );
747
- sceGuEnable (GU_BLEND );
748
- break ;
749
- case SDL_BLENDMODE_MUL :
750
- sceGuTexFunc (GU_TFX_MODULATE , GU_TCC_RGBA );
751
- /* FIXME SDL_BLENDMODE_MUL is simplified, and dstA is in fact un-changed.*/
752
- sceGuBlendFunc (GU_ADD , GU_DST_COLOR , GU_ONE_MINUS_SRC_ALPHA , 0 , 0 );
753
- sceGuEnable (GU_BLEND );
754
- break ;
755
- }
756
-
757
- data -> blendInfo .mode = blendInfo .mode ;
758
- }
759
-
760
- // Update shade model if needed
761
- if (data -> blendInfo .shade != blendInfo .shade ) {
762
- sceGuShadeModel (blendInfo .shade );
763
- data -> blendInfo .shade = blendInfo .shade ;
764
- }
765
- }
766
-
767
767
static inline int PSP_RenderSetClipRect (SDL_Renderer * renderer , SDL_RenderCommand * cmd )
768
768
{
769
769
const SDL_Rect * rect = & cmd -> data .cliprect .rect ;
0 commit comments