summaryrefslogtreecommitdiff
path: root/prenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'prenderer.cpp')
-rw-r--r--prenderer.cpp43
1 files changed, 26 insertions, 17 deletions
diff --git a/prenderer.cpp b/prenderer.cpp
index aa44a5a..8690f4e 100644
--- a/prenderer.cpp
+++ b/prenderer.cpp
@@ -257,6 +257,8 @@ Layer_LocalToScreenSpace(project_state *State, memory *Memory, block_layer *Laye
static void
Fallback_RenderLayer(transform_info T, void *OutputBuffer, rectangle RenderRegion);
+static void
+Fallback_RenderDirect(direct_info T, void *OutputBuffer, rectangle RenderRegion);
static void
RenderLayers(render_entry Entry) {
@@ -266,14 +268,13 @@ RenderLayers(render_entry Entry) {
{
Fallback_RenderLayer(*(transform_info *)Entry.RenderData, Entry.OutputBuffer, Entry.RenderRegion);
} break;
- case render_type_direct:
+ case render_type_notransform:
{
- Assert(0);
- // Fallback_RenderDirect(*(direct_info *)Entry.RenderData, Entry.OutputBuffer, Entry.RenderRegion);
+ Fallback_RenderDirect(*(direct_info *)Entry.RenderData, Entry.OutputBuffer, Entry.RenderRegion);
} break;
case render_type_brush:
{
- PaintTest_AVX2(*(brush_info *)Entry.RenderData, Entry.OutputBuffer, Entry.RenderRegion);
+ PaintTest(*(brush_info *)Entry.RenderData, Entry.OutputBuffer, Entry.RenderRegion);
} break;
default:
{
@@ -295,6 +296,13 @@ RenderLayers(render_entry Entry) {
static void
Renderer_Start(void *Data, void *OutputBuffer, render_type RenderType, rectangle RenderRegion)
{
+#if DEBUG
+ if (Debug.NoThreading) {
+ render_entry Entry = { Data, OutputBuffer, RenderType, RenderRegion };
+ RenderLayers(Entry);
+ return;
+ }
+#endif
// CPU
Threading_BitmapOp(Data, OutputBuffer, RenderType, RenderRegion);
}
@@ -302,6 +310,12 @@ Renderer_Start(void *Data, void *OutputBuffer, render_type RenderType, rectangle
static void
Renderer_Check(bool32 *Test, render_type RenderType)
{
+#if DEBUG
+ if (Debug.NoThreading) {
+ *Test = true;
+ return;
+ }
+#endif
// CPU
*Test = Threading_IsActive(RenderType);
}
@@ -521,7 +535,7 @@ Transform_Calculate(project_state *State, memory *Memory, project_data *File, bl
A_Blend = A_Dest;\
static void
-Fallback_RenderDirect(transform_info T, void *OutputBuffer, rectangle RenderRegion)
+Fallback_RenderDirect(direct_info T, void *OutputBuffer, rectangle RenderRegion)
{
rectangle LayerBounds = ClipRectangle( T.ClipRect, RenderRegion);
@@ -534,16 +548,16 @@ Fallback_RenderDirect(transform_info T, void *OutputBuffer, rectangle RenderRegi
{
uint16 LX = X;
uint16 LY = Y;
- uint16 LXPlus = Ceil(X+1, (uint32)T.LayerWidth - 1);
- uint16 LYPlus = Ceil(Y+1, (uint32)T.LayerHeight - 1);
+ uint16 LXPlus = Ceil(X+1, (uint32)T.BufferWidth - 1);
+ uint16 LYPlus = Ceil(Y+1, (uint32)T.BufferHeight - 1);
- uint8 *TexPTR0 = ((uint8 *)T.SourceBuffer + ((uint16)T.LayerPitch * LY) + (LX * (uint16)T.LayerBytesPerPixel));
+ uint8 *TexPTR0 = ((uint8 *)T.SourceBuffer + ((uint16)T.BufferPitch * LY) + (LX * (uint16)T.BufferBytesPerPixel));
uint32 PixelA = *(uint32 *)TexPTR0;
- real32 TexRA = (real32)(*(uint32 *)(TexPTR0 + T.LayerBits.ByteOffset * 0) & T.LayerBits.MaskPixel) * T.LayerBits.Normalized;
- real32 TexGA = (real32)(*(uint32 *)(TexPTR0 + T.LayerBits.ByteOffset * 1) & T.LayerBits.MaskPixel) * T.LayerBits.Normalized;
- real32 TexBA = (real32)(*(uint32 *)(TexPTR0 + T.LayerBits.ByteOffset * 2) & T.LayerBits.MaskPixel) * T.LayerBits.Normalized;
- real32 TexAA = (real32)(*(uint32 *)(TexPTR0 + T.LayerBits.ByteOffset * 3) & T.LayerBits.MaskPixel) * T.LayerBits.Normalized;
+ real32 TexRA = (real32)(*(uint32 *)(TexPTR0 + T.BufferBits.ByteOffset * 0) & T.BufferBits.MaskPixel) * T.BufferBits.Normalized;
+ real32 TexGA = (real32)(*(uint32 *)(TexPTR0 + T.BufferBits.ByteOffset * 1) & T.BufferBits.MaskPixel) * T.BufferBits.Normalized;
+ real32 TexBA = (real32)(*(uint32 *)(TexPTR0 + T.BufferBits.ByteOffset * 2) & T.BufferBits.MaskPixel) * T.BufferBits.Normalized;
+ real32 TexAA = (real32)(*(uint32 *)(TexPTR0 + T.BufferBits.ByteOffset * 3) & T.BufferBits.MaskPixel) * T.BufferBits.Normalized;
real32 LayerAlpha = TexAA * 1; // brush opacity
@@ -850,11 +864,9 @@ EndRenderState(project_state *State)
}
State->NumberOfLayersToRender = 0;
-#if THREADED
SDL_AtomicSet(&CurrentEntry, 0);
SDL_AtomicSet(&QueuedEntries, 0);
SDL_AtomicSet(&CompletedEntries, 0);
-#endif
}
@@ -930,7 +942,6 @@ QueueCurrentFrame(project_data *File, comp_buffer *CompBuffer, project_state *St
}
}
-#if THREADED
uint16 TileWidth = CompBuffer->Width / 4;
uint16 TileHeight = CompBuffer->Height / 4;
@@ -957,12 +968,10 @@ QueueCurrentFrame(project_data *File, comp_buffer *CompBuffer, project_state *St
}
}
-#else
rectangle RenderRegion = {0, 0, (int32)CompBuffer->Width, (int32)CompBuffer->Height};
RenderLayers(&RenderInfo, RenderRegion);
-#endif
}
#if ARM