Cocoa Port:
- Add SoftRasterizer hack from r4984. - Update UI to reflect the current feature set. - Do some code cleanup.
This commit is contained in:
parent
443b24cac2
commit
cf109b69dd
|
@ -686,6 +686,8 @@
|
|||
<true/>
|
||||
<key>Render3D_Fog</key>
|
||||
<true/>
|
||||
<key>Render3D_FragmentSamplingHack</key>
|
||||
<true/>
|
||||
<key>Render3D_HighPrecisionColorInterpolation</key>
|
||||
<true/>
|
||||
<key>Render3D_LineHack</key>
|
||||
|
|
|
@ -363,7 +363,7 @@ void OGLVideoOutput::UpdateDisplayTransformationOGL()
|
|||
}
|
||||
}
|
||||
|
||||
void OGLVideoOutput::RespondToVideoFilterChangeOGL(const VideoFilterTypeID videoFilterTypeID)
|
||||
void OGLVideoOutput::SetVideoFilterOGL(const VideoFilterTypeID videoFilterTypeID)
|
||||
{
|
||||
this->_vfSingle->ChangeFilterByID(videoFilterTypeID);
|
||||
this->_vfDual->ChangeFilterByID(videoFilterTypeID);
|
||||
|
|
|
@ -70,6 +70,10 @@ protected:
|
|||
GLubyte vtxIndexBuffer[12];
|
||||
size_t _vtxBufferOffset;
|
||||
|
||||
void CalculateDisplayNormalSize(double *w, double *h);
|
||||
void UpdateVertices();
|
||||
void UpdateTexCoords(GLfloat s, GLfloat t);
|
||||
|
||||
void GetExtensionSetOGL(std::set<std::string> *oglExtensionSet);
|
||||
bool IsExtensionPresent(const std::set<std::string> &oglExtensionSet, const std::string &extensionName) const;
|
||||
bool SetupShadersOGL(const char *vertexProgram, const char *fragmentProgram);
|
||||
|
@ -90,11 +94,7 @@ public:
|
|||
virtual void RenderOGL();
|
||||
virtual void SetViewportSizeOGL(GLsizei w, GLsizei h);
|
||||
virtual void UpdateDisplayTransformationOGL();
|
||||
virtual void RespondToVideoFilterChangeOGL(const VideoFilterTypeID videoFilterTypeID);
|
||||
|
||||
void CalculateDisplayNormalSize(double *w, double *h);
|
||||
void UpdateVertices();
|
||||
void UpdateTexCoords(GLfloat s, GLfloat t);
|
||||
virtual void SetVideoFilterOGL(const VideoFilterTypeID videoFilterTypeID);
|
||||
|
||||
int GetDisplayMode();
|
||||
void SetDisplayMode(int dispMode);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2013 DeSmuME team
|
||||
Copyright (C) 2013-2014 DeSmuME team
|
||||
|
||||
This file is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -54,6 +54,7 @@
|
|||
@property (assign) NSUInteger render3DThreads;
|
||||
@property (assign) BOOL render3DLineHack;
|
||||
@property (assign) BOOL render3DMultisample;
|
||||
@property (assign) BOOL render3DFragmentSamplingHack;
|
||||
|
||||
- (BOOL) gpuStateByBit:(const UInt32)stateBit;
|
||||
- (BOOL) isGPUTypeDisplayed:(const NSInteger)theGpuType;
|
||||
|
|
|
@ -67,6 +67,7 @@ GPU3DInterface *core3DList[] = {
|
|||
@dynamic render3DThreads;
|
||||
@dynamic render3DLineHack;
|
||||
@dynamic render3DMultisample;
|
||||
@dynamic render3DFragmentSamplingHack;
|
||||
|
||||
|
||||
- (id)init
|
||||
|
@ -321,6 +322,22 @@ GPU3DInterface *core3DList[] = {
|
|||
return state;
|
||||
}
|
||||
|
||||
- (void) setRender3DFragmentSamplingHack:(BOOL)state
|
||||
{
|
||||
pthread_mutex_lock(self.mutexProducer);
|
||||
CommonSettings.GFX3D_TXTHack = state ? true : false;
|
||||
pthread_mutex_unlock(self.mutexProducer);
|
||||
}
|
||||
|
||||
- (BOOL) render3DFragmentSamplingHack
|
||||
{
|
||||
pthread_mutex_lock(self.mutexProducer);
|
||||
const BOOL state = CommonSettings.GFX3D_TXTHack ? YES : NO;
|
||||
pthread_mutex_unlock(self.mutexProducer);
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
- (void) setLayerMainGPU:(BOOL)gpuState
|
||||
{
|
||||
pthread_mutex_lock(self.mutexProducer);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2011 Roger Manuel
|
||||
Copyright (C) 2011-2013 DeSmuME team
|
||||
Copyright (C) 2011-2014 DeSmuME team
|
||||
|
||||
This file is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2011 Roger Manuel
|
||||
Copyright (C) 2011-2013 DeSmuME team
|
||||
Copyright (C) 2011-2014 DeSmuME team
|
||||
|
||||
This file is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -971,30 +971,7 @@
|
|||
const float gapScalar = *(float *)[displayGapScalarData bytes];
|
||||
[(id<CocoaDSDisplayVideoDelegate>)delegate doDisplayGapChanged:gapScalar];
|
||||
}
|
||||
/*
|
||||
- (void) handleChangeBilinearOutput:(NSData *)bilinearStateData
|
||||
{
|
||||
if (delegate == nil || ![delegate respondsToSelector:@selector(doBilinearOutputChanged:)])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const BOOL theState = *(BOOL *)[bilinearStateData bytes];
|
||||
[(id<CocoaDSDisplayVideoDelegate>)delegate doBilinearOutputChanged:theState];
|
||||
[self handleEmuFrameProcessed:self.frameData attributes:self.frameAttributesData];
|
||||
}
|
||||
|
||||
- (void) handleChangeVerticalSync:(NSData *)verticalSyncStateData
|
||||
{
|
||||
if (delegate == nil || ![delegate respondsToSelector:@selector(doVerticalSyncChanged:)])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const BOOL theState = *(BOOL *)[verticalSyncStateData bytes];
|
||||
[(id<CocoaDSDisplayVideoDelegate>)delegate doVerticalSyncChanged:theState];
|
||||
}
|
||||
*/
|
||||
- (void) handleChangeVideoFilter:(NSData *)videoFilterTypeIdData
|
||||
{
|
||||
if (delegate == nil || ![delegate respondsToSelector:@selector(doVideoFilterChanged:)])
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1081,8 +1081,6 @@ static std::tr1::unordered_map<NSScreen *, DisplayWindowController *> _screenMap
|
|||
|
||||
// Set the video filter source size now since the proper size is needed on initialization.
|
||||
// If we don't do this, new windows could draw incorrectly.
|
||||
//const NSSize vfSrcSize = NSMakeSize(GPU_DISPLAY_WIDTH, ([self displayMode] == DS_DISPLAY_TYPE_DUAL) ? GPU_DISPLAY_HEIGHT * 2 : GPU_DISPLAY_HEIGHT);
|
||||
//[[cdsVideoOutput vf] setSourceSize:vfSrcSize];
|
||||
[CocoaDSUtil messageSendOneWayWithInteger:[cdsVideoOutput receivePort] msgID:MESSAGE_CHANGE_VIDEO_FILTER integerValue:[self videoFilterType]];
|
||||
|
||||
// Add the video thread to the output list.
|
||||
|
@ -1785,7 +1783,7 @@ static std::tr1::unordered_map<NSScreen *, DisplayWindowController *> _screenMap
|
|||
{
|
||||
CGLLockContext(cglDisplayContext);
|
||||
CGLSetCurrentContext(cglDisplayContext);
|
||||
oglv->RespondToVideoFilterChangeOGL((const VideoFilterTypeID)videoFilterTypeID);
|
||||
oglv->SetVideoFilterOGL((const VideoFilterTypeID)videoFilterTypeID);
|
||||
CGLUnlockContext(cglDisplayContext);
|
||||
}
|
||||
|
||||
|
|
|
@ -139,16 +139,6 @@ class AudioSampleBlockGenerator;
|
|||
@property (assign) NSInteger frameJumpFramesForward;
|
||||
@property (assign) NSInteger frameJumpToFrame;
|
||||
|
||||
@property (assign) NSInteger render3DRenderingEngine;
|
||||
@property (assign) BOOL render3DHighPrecisionColorInterpolation;
|
||||
@property (assign) BOOL render3DEdgeMarking;
|
||||
@property (assign) BOOL render3DFog;
|
||||
@property (assign) BOOL render3DTextures;
|
||||
@property (assign) NSInteger render3DDepthComparisonThreshold;
|
||||
@property (assign) NSInteger render3DThreads;
|
||||
@property (assign) BOOL render3DLineHack;
|
||||
@property (assign) BOOL render3DMultisample;
|
||||
|
||||
@property (retain) DisplayWindowController *mainWindow;
|
||||
@property (readonly) NSMutableArray *windowList;
|
||||
|
||||
|
|
|
@ -85,16 +85,6 @@
|
|||
@synthesize frameJumpFramesForward;
|
||||
@synthesize frameJumpToFrame;
|
||||
|
||||
@dynamic render3DRenderingEngine;
|
||||
@dynamic render3DHighPrecisionColorInterpolation;
|
||||
@dynamic render3DEdgeMarking;
|
||||
@dynamic render3DFog;
|
||||
@dynamic render3DTextures;
|
||||
@dynamic render3DDepthComparisonThreshold;
|
||||
@dynamic render3DThreads;
|
||||
@dynamic render3DLineHack;
|
||||
@dynamic render3DMultisample;
|
||||
|
||||
@synthesize mainWindow;
|
||||
@synthesize windowList;
|
||||
|
||||
|
@ -318,124 +308,6 @@
|
|||
return currentVolumeValue;
|
||||
}
|
||||
|
||||
- (void) setRender3DRenderingEngine:(NSInteger)engineID
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DRenderingEngine:engineID];
|
||||
}
|
||||
|
||||
- (NSInteger) render3DRenderingEngine
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DRenderingEngine];
|
||||
}
|
||||
|
||||
- (void) setRender3DHighPrecisionColorInterpolation:(BOOL)theState
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DHighPrecisionColorInterpolation:theState];
|
||||
}
|
||||
|
||||
- (BOOL) render3DHighPrecisionColorInterpolation
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DHighPrecisionColorInterpolation];
|
||||
}
|
||||
|
||||
- (void) setRender3DEdgeMarking:(BOOL)theState
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DEdgeMarking:theState];
|
||||
}
|
||||
|
||||
- (BOOL) render3DEdgeMarking
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DEdgeMarking];
|
||||
}
|
||||
|
||||
- (void) setRender3DFog:(BOOL)theState
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DFog:theState];
|
||||
}
|
||||
|
||||
- (BOOL) render3DFog
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DFog];
|
||||
}
|
||||
|
||||
- (void) setRender3DTextures:(BOOL)theState
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DTextures:theState];
|
||||
}
|
||||
|
||||
- (BOOL) render3DTextures
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DTextures];
|
||||
}
|
||||
|
||||
- (void) setRender3DDepthComparisonThreshold:(NSInteger)threshold
|
||||
{
|
||||
if (threshold < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DDepthComparisonThreshold:(NSUInteger)threshold];
|
||||
}
|
||||
|
||||
- (NSInteger) render3DDepthComparisonThreshold
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DDepthComparisonThreshold];
|
||||
}
|
||||
|
||||
- (void) setRender3DThreads:(NSInteger)threadCount
|
||||
{
|
||||
if (threadCount < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DThreads:(NSUInteger)threadCount];
|
||||
}
|
||||
|
||||
- (NSInteger) render3DThreads
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DThreads];
|
||||
}
|
||||
|
||||
- (void) setRender3DLineHack:(BOOL)theState
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DLineHack:theState];
|
||||
}
|
||||
|
||||
- (BOOL) render3DLineHack
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DLineHack];
|
||||
}
|
||||
|
||||
- (void) setRender3DMultisample:(BOOL)theState
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[cdsCore.cdsGPU setRender3DMultisample:theState];
|
||||
}
|
||||
|
||||
- (BOOL) render3DMultisample
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
return [cdsCore.cdsGPU render3DMultisample];
|
||||
}
|
||||
|
||||
#pragma mark IBActions
|
||||
|
||||
- (IBAction) newDisplayWindow:(id)sender
|
||||
|
@ -1019,15 +891,16 @@
|
|||
// Force end of editing of any text fields.
|
||||
[[(NSControl *)sender window] makeFirstResponder:nil];
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:[cdsCore.cdsGPU render3DRenderingEngine] forKey:@"Render3D_RenderingEngine"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[cdsCore.cdsGPU render3DHighPrecisionColorInterpolation] forKey:@"Render3D_HighPrecisionColorInterpolation"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[cdsCore.cdsGPU render3DEdgeMarking] forKey:@"Render3D_EdgeMarking"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[cdsCore.cdsGPU render3DFog] forKey:@"Render3D_Fog"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[cdsCore.cdsGPU render3DTextures] forKey:@"Render3D_Textures"];
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:[cdsCore.cdsGPU render3DDepthComparisonThreshold] forKey:@"Render3D_DepthComparisonThreshold"];
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:[cdsCore.cdsGPU render3DThreads] forKey:@"Render3D_Threads"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[cdsCore.cdsGPU render3DLineHack] forKey:@"Render3D_LineHack"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[cdsCore.cdsGPU render3DMultisample] forKey:@"Render3D_Multisample"];
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:[[cdsCore cdsGPU] render3DRenderingEngine] forKey:@"Render3D_RenderingEngine"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DHighPrecisionColorInterpolation] forKey:@"Render3D_HighPrecisionColorInterpolation"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DEdgeMarking] forKey:@"Render3D_EdgeMarking"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DFog] forKey:@"Render3D_Fog"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DTextures] forKey:@"Render3D_Textures"];
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:[[cdsCore cdsGPU] render3DDepthComparisonThreshold] forKey:@"Render3D_DepthComparisonThreshold"];
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:[[cdsCore cdsGPU] render3DThreads] forKey:@"Render3D_Threads"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DLineHack] forKey:@"Render3D_LineHack"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DMultisample] forKey:@"Render3D_Multisample"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DFragmentSamplingHack] forKey:@"Render3D_FragmentSamplingHack"];
|
||||
}
|
||||
|
||||
- (IBAction) writeDefaultsEmulationSettings:(id)sender
|
||||
|
@ -2177,15 +2050,17 @@
|
|||
[[self cdsSpeaker] setSpuSyncMethod:[[NSUserDefaults standardUserDefaults] integerForKey:@"SPU_SyncMethod"]];
|
||||
|
||||
// Set the 3D rendering options per user preferences.
|
||||
[self setRender3DThreads:(NSUInteger)[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_Threads"]];
|
||||
[self setRender3DRenderingEngine:[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_RenderingEngine"]];
|
||||
[self setRender3DHighPrecisionColorInterpolation:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_HighPrecisionColorInterpolation"]];
|
||||
[self setRender3DEdgeMarking:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_EdgeMarking"]];
|
||||
[self setRender3DFog:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_Fog"]];
|
||||
[self setRender3DTextures:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_Textures"]];
|
||||
[self setRender3DDepthComparisonThreshold:(NSUInteger)[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_DepthComparisonThreshold"]];
|
||||
[self setRender3DLineHack:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_LineHack"]];
|
||||
[self setRender3DMultisample:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_Multisample"]];
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[[cdsCore cdsGPU] setRender3DThreads:(NSUInteger)[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_Threads"]];
|
||||
[[cdsCore cdsGPU] setRender3DRenderingEngine:[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_RenderingEngine"]];
|
||||
[[cdsCore cdsGPU] setRender3DHighPrecisionColorInterpolation:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_HighPrecisionColorInterpolation"]];
|
||||
[[cdsCore cdsGPU] setRender3DEdgeMarking:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_EdgeMarking"]];
|
||||
[[cdsCore cdsGPU] setRender3DFog:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_Fog"]];
|
||||
[[cdsCore cdsGPU] setRender3DTextures:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_Textures"]];
|
||||
[[cdsCore cdsGPU] setRender3DDepthComparisonThreshold:(NSUInteger)[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_DepthComparisonThreshold"]];
|
||||
[[cdsCore cdsGPU] setRender3DLineHack:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_LineHack"]];
|
||||
[[cdsCore cdsGPU] setRender3DMultisample:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_Multisample"]];
|
||||
[[cdsCore cdsGPU] setRender3DFragmentSamplingHack:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_FragmentSamplingHack"]];
|
||||
}
|
||||
|
||||
#pragma mark NSUserInterfaceValidations Protocol
|
||||
|
@ -2466,7 +2341,8 @@
|
|||
|
||||
- (void)controlTextDidEndEditing:(NSNotification *)aNotification
|
||||
{
|
||||
[self setRender3DDepthComparisonThreshold:[(NSNumber *)[aNotification object] integerValue]];
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
[[cdsCore cdsGPU] setRender3DDepthComparisonThreshold:[(NSNumber *)[aNotification object] integerValue]];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue