| 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; |
nothing calls this directly
no test coverage detected