MCPcopy Create free account
hub / github.com/defold/defold / NullContext

Method NullContext

engine/graphics/src/null/graphics_null.cpp:73–137  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71 }
72
73 NullContext::NullContext(const ContextParams& params)
74 {
75 memset(this, 0, sizeof(*this));
76 m_BaseContext.m_DefaultTextureMinFilter = params.m_DefaultTextureMinFilter;
77 m_BaseContext.m_DefaultTextureMagFilter = params.m_DefaultTextureMagFilter;
78 m_BaseContext.m_Width = params.m_Width;
79 m_BaseContext.m_Height = params.m_Height;
80 m_BaseContext.m_Window = params.m_Window;
81 m_BaseContext.m_PrintDeviceInfo = params.m_PrintDeviceInfo;
82 m_JobContext = params.m_JobContext;
83
84 // We need to have some sort of valid default filtering
85 if (m_BaseContext.m_DefaultTextureMinFilter == TEXTURE_FILTER_DEFAULT)
86 m_BaseContext.m_DefaultTextureMinFilter = TEXTURE_FILTER_LINEAR;
87 if (m_BaseContext.m_DefaultTextureMagFilter == TEXTURE_FILTER_DEFAULT)
88 m_BaseContext.m_DefaultTextureMagFilter = TEXTURE_FILTER_LINEAR;
89
90 for (int i = 0; i < MAX_TEXTURE_COUNT; ++i)
91 {
92 m_Samplers[i].m_MinFilter = m_BaseContext.m_DefaultTextureMinFilter;
93 m_Samplers[i].m_MagFilter = m_BaseContext.m_DefaultTextureMagFilter;
94 }
95
96 assert(dmPlatform::GetWindowStateParam(m_BaseContext.m_Window, WINDOW_STATE_OPENED));
97
98 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_LUMINANCE;
99 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_LUMINANCE_ALPHA;
100 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_RGB;
101 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_RGBA;
102 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_RGB_16BPP;
103 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_RGBA_16BPP;
104 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_RGB_ETC1;
105 m_BaseContext.m_TextureFormatSupport |= 1ULL << TEXTURE_FORMAT_RGBA32F;
106
107 // Synthetic limits for the null adapter — these are not queried from any
108 // hardware, just generous defaults that roughly mirror Vulkan / D3D12
109 // Feature Level 11_0 guarantees so test code can assume a baseline
110 // modern profile.
111 GraphicsContextLimits& limits = m_BaseContext.m_Limits;
112 limits.m_MaxTextureSize2D = 16384;
113 limits.m_MaxTextureSize3D = 2048;
114 limits.m_MaxTextureSizeCube = 16384;
115 limits.m_MaxTextureArrayLayers = 2048;
116
117 limits.m_MaxFramebufferWidth = 16384;
118 limits.m_MaxFramebufferHeight = 16384;
119 limits.m_MaxColorAttachments = 8;
120
121 limits.m_MaxSamplersPerStage = 16;
122 limits.m_MaxTexturesPerStage = 32;
123 limits.m_MaxVertexAttributes = 16;
124 limits.m_MaxVertexBuffers = 16;
125
126 limits.m_MaxComputeWorkgroupSizeX = 1024;
127 limits.m_MaxComputeWorkgroupSizeY = 1024;
128 limits.m_MaxComputeWorkgroupSizeZ = 64;
129 limits.m_MaxComputeWorkgroupInvocations = 1024;
130 limits.m_MaxComputeSharedMemorySize = 32 * 1024;

Callers

nothing calls this directly

Calls 2

assertFunction · 0.50
GetWindowStateParamFunction · 0.50

Tested by

no test coverage detected