/* We set the dirty bit in intel_prepare_render() if we're
* front buffer rendering once we get there.
*/
- intel->front_buffer_dirty = GL_FALSE;
+ intel->front_buffer_dirty = false;
}
}
}
if (buffers == NULL)
return;
- drawable->x = 0;
- drawable->y = 0;
- drawable->backX = 0;
- drawable->backY = 0;
- drawable->numClipRects = 1;
- drawable->pClipRects[0].x1 = 0;
- drawable->pClipRects[0].y1 = 0;
- drawable->pClipRects[0].x2 = drawable->w;
- drawable->pClipRects[0].y2 = drawable->h;
- drawable->numBackClipRects = 1;
- drawable->pBackClipRects[0].x1 = 0;
- drawable->pBackClipRects[0].y1 = 0;
- drawable->pBackClipRects[0].x2 = drawable->w;
- drawable->pBackClipRects[0].y2 = drawable->h;
-
for (i = 0; i < count; i++) {
switch (buffers[i].attachment) {
case __DRI_BUFFER_FRONT_LEFT:
if (drawable && drawable->dri2.stamp != driContext->dri2.draw_stamp) {
if (drawable->lastStamp != drawable->dri2.stamp)
intel_update_renderbuffers(driContext, drawable);
- intel_draw_buffer(&intel->ctx, intel->ctx.DrawBuffer);
+ intel_draw_buffer(&intel->ctx);
driContext->dri2.draw_stamp = drawable->dri2.stamp;
}
* mark it as dirty here.
*/
if (intel->is_front_buffer_rendering)
- intel->front_buffer_dirty = GL_TRUE;
+ intel->front_buffer_dirty = true;
/* Wait for the swapbuffers before the one we just emitted, so we
* don't get too many swaps outstanding for apps that are GPU-heavy
drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch);
drm_intel_bo_unreference(intel->first_post_swapbuffers_batch);
intel->first_post_swapbuffers_batch = NULL;
- intel->need_throttle = GL_FALSE;
+ intel->need_throttle = false;
}
}
{ "sleep", DEBUG_SLEEP },
{ "stats", DEBUG_STATS },
{ "tile", DEBUG_TILE },
- { "sing", DEBUG_SINGLE_THREAD },
- { "thre", DEBUG_SINGLE_THREAD },
{ "wm", DEBUG_WM },
{ "urb", DEBUG_URB },
{ "vs", DEBUG_VS },
intel_flush(ctx);
intel_flush_front(ctx);
if (intel->is_front_buffer_rendering)
- intel->need_throttle = GL_TRUE;
+ intel->need_throttle = true;
}
void
intel_init_syncobj_functions(functions);
}
-GLboolean
+bool
intelInitContext(struct intel_context *intel,
int api,
const struct gl_config * mesaVis,
/* we can't do anything without a connection to the device */
if (intelScreen->bufmgr == NULL)
- return GL_FALSE;
+ return false;
/* Can't rely on invalidate events, fall back to glViewport hack */
if (!driContextPriv->driScreenPriv->dri2.useInvalidate) {
if (!_mesa_initialize_context(&intel->ctx, api, mesaVis, shareCtx,
functions, (void *) intel)) {
printf("%s: failed to init mesa context\n", __FUNCTION__);
- return GL_FALSE;
+ return false;
}
driContextPriv->driverPrivate = intel;
intel->driContext = driContextPriv;
intel->driFd = sPriv->fd;
- intel->has_xrgb_textures = GL_TRUE;
intel->gen = intelScreen->gen;
- if (IS_GEN7(intel->intelScreen->deviceID)) {
- intel->needs_ff_sync = GL_TRUE;
- intel->has_luminance_srgb = GL_TRUE;
- } else if (IS_GEN6(intel->intelScreen->deviceID)) {
- intel->needs_ff_sync = GL_TRUE;
- intel->has_luminance_srgb = GL_TRUE;
- } else if (IS_GEN5(intel->intelScreen->deviceID)) {
- intel->needs_ff_sync = GL_TRUE;
- intel->has_luminance_srgb = GL_TRUE;
- } else if (IS_965(intel->intelScreen->deviceID)) {
- if (IS_G4X(intel->intelScreen->deviceID)) {
- intel->has_luminance_srgb = GL_TRUE;
- intel->is_g4x = GL_TRUE;
- }
- } else if (IS_9XX(intel->intelScreen->deviceID)) {
- if (IS_945(intel->intelScreen->deviceID)) {
- intel->is_945 = GL_TRUE;
- }
- } else {
- if (intel->intelScreen->deviceID == PCI_CHIP_I830_M ||
- intel->intelScreen->deviceID == PCI_CHIP_845_G) {
- intel->has_xrgb_textures = GL_FALSE;
- }
+
+ const int devID = intelScreen->deviceID;
+
+ if (IS_SNB_GT1(devID) || IS_IVB_GT1(devID))
+ intel->gt = 1;
+ else if (IS_SNB_GT2(devID) || IS_IVB_GT2(devID))
+ intel->gt = 2;
+ else
+ intel->gt = 0;
+
+ if (IS_G4X(devID)) {
+ intel->is_g4x = true;
+ } else if (IS_945(devID)) {
+ intel->is_945 = true;
+ }
+
+ if (intel->gen >= 5) {
+ intel->needs_ff_sync = true;
}
intel->has_separate_stencil = intel->intelScreen->hw_has_separate_stencil;
memset(&ctx->TextureFormatSupported, 0,
sizeof(ctx->TextureFormatSupported));
- ctx->TextureFormatSupported[MESA_FORMAT_ARGB8888] = GL_TRUE;
- if (intel->has_xrgb_textures)
- ctx->TextureFormatSupported[MESA_FORMAT_XRGB8888] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_ARGB4444] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_ARGB1555] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RGB565] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_L8] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_A8] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_I8] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_AL88] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_ARGB8888] = true;
+ if (devID != PCI_CHIP_I830_M && devID != PCI_CHIP_845_G)
+ ctx->TextureFormatSupported[MESA_FORMAT_XRGB8888] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_ARGB4444] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_ARGB1555] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGB565] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_L8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_A8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_I8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_AL88] = true;
if (intel->gen >= 4)
- ctx->TextureFormatSupported[MESA_FORMAT_AL1616] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_AL1616] = true;
/* Depth and stencil */
- ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_X8_Z24] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_X8_Z24] = true;
ctx->TextureFormatSupported[MESA_FORMAT_S8] = intel->has_separate_stencil;
/*
* combo that actually works, so this can probably be re-enabled.
*/
/*
- ctx->TextureFormatSupported[MESA_FORMAT_Z16] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_Z24] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_Z16] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_Z24] = true;
*/
/* ctx->Extensions.MESA_ycbcr_texture */
- ctx->TextureFormatSupported[MESA_FORMAT_YCBCR] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_YCBCR_REV] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_YCBCR] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_YCBCR_REV] = true;
/* GL_3DFX_texture_compression_FXT1 */
- ctx->TextureFormatSupported[MESA_FORMAT_RGB_FXT1] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FXT1] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGB_FXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FXT1] = true;
/* GL_EXT_texture_compression_s3tc */
- ctx->TextureFormatSupported[MESA_FORMAT_RGB_DXT1] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT1] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT3] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT5] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGB_DXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT3] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT5] = true;
#ifndef I915
/* GL_ARB_texture_compression_rgtc */
- ctx->TextureFormatSupported[MESA_FORMAT_RED_RGTC1] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RED_RGTC1] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RG_RGTC2] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG_RGTC2] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_RED_RGTC1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RED_RGTC1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RG_RGTC2] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG_RGTC2] = true;
/* GL_ARB_texture_rg */
- ctx->TextureFormatSupported[MESA_FORMAT_R8] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_R16] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RG88] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RG1616] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_R8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_R16] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RG88] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RG1616] = true;
/* GL_MESA_texture_signed_rgba / GL_EXT_texture_snorm */
- ctx->TextureFormatSupported[MESA_FORMAT_DUDV8] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RGBA8888_REV] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R8] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG88_REV] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R16] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_GR1616] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_DUDV8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RGBA8888_REV] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG88_REV] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R16] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_GR1616] = true;
/* GL_EXT_texture_sRGB */
- ctx->TextureFormatSupported[MESA_FORMAT_SARGB8] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_SARGB8] = true;
if (intel->gen >= 5 || intel->is_g4x)
- ctx->TextureFormatSupported[MESA_FORMAT_SRGB_DXT1] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SRGBA_DXT1] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SRGBA_DXT3] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SRGBA_DXT5] = GL_TRUE;
- if (intel->has_luminance_srgb) {
- ctx->TextureFormatSupported[MESA_FORMAT_SL8] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_SLA8] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_SRGB_DXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SRGBA_DXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SRGBA_DXT3] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SRGBA_DXT5] = true;
+ if (intel->gen >= 5 || intel->is_g4x) {
+ ctx->TextureFormatSupported[MESA_FORMAT_SL8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_SLA8] = true;
}
#ifdef TEXTURE_FLOAT_ENABLED
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FLOAT32] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_RG_FLOAT32] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_R_FLOAT32] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_INTENSITY_FLOAT32] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_FLOAT32] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_ALPHA_FLOAT32] = GL_TRUE;
- ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FLOAT32] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RG_FLOAT32] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_R_FLOAT32] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_INTENSITY_FLOAT32] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_FLOAT32] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_ALPHA_FLOAT32] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = true;
+
+ /* GL_EXT_texture_shared_exponent */
+ ctx->TextureFormatSupported[MESA_FORMAT_RGB9_E5_FLOAT] = true;
+
+ /* GL_EXT_packed_float */
+ ctx->TextureFormatSupported[MESA_FORMAT_R11_G11_B10_FLOAT] = true;
#endif
#endif /* !I915 */
ctx->Const.MaxSamples = 1.0;
+ if (intel->gen >= 6)
+ ctx->Const.MaxClipPlanes = 8;
+
+ ctx->Const.StripTextureBorder = GL_TRUE;
+
/* reinitialize the context point state.
* It depend on constants in __struct gl_contextRec::Const
*/
_mesa_init_point(ctx);
if (intel->gen >= 4) {
- ctx->Const.sRGBCapable = GL_TRUE;
+ ctx->Const.sRGBCapable = true;
if (MAX_WIDTH > 8192)
ctx->Const.MaxRenderbufferSize = 8192;
} else {
_swsetup_CreateContext(ctx);
/* Configure swrast to match hardware characteristics: */
- _swrast_allow_pixel_fog(ctx, GL_FALSE);
- _swrast_allow_vertex_fog(ctx, GL_TRUE);
+ _swrast_allow_pixel_fog(ctx, false);
+ _swrast_allow_vertex_fog(ctx, true);
_mesa_meta_init(ctx);
intelInitExtensions(ctx);
break;
case API_OPENGLES:
+ intelInitExtensionsES1(ctx);
break;
case API_OPENGLES2:
intelInitExtensionsES2(ctx);
INTEL_DEBUG = driParseDebugString(getenv("INTEL_DEBUG"), debug_control);
if (INTEL_DEBUG & DEBUG_BUFMGR)
- dri_bufmgr_set_debug(intel->bufmgr, GL_TRUE);
+ dri_bufmgr_set_debug(intel->bufmgr, true);
intel_batchbuffer_init(intel);
intel_fbo_init(intel);
- if (intel->ctx.Mesa_DXTn) {
- _mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc");
- _mesa_enable_extension(ctx, "GL_S3_s3tc");
- }
- else if (driQueryOptionb(&intel->optionCache, "force_s3tc_enable")) {
- _mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc");
- }
intel->use_texture_tiling = driQueryOptionb(&intel->optionCache,
"texture_tiling");
intel->use_early_z = driQueryOptionb(&intel->optionCache, "early_z");
intel->always_flush_cache = 1;
}
- return GL_TRUE;
+ return true;
}
void
/* Unset current context and dispath table */
_mesa_make_current(NULL, NULL, NULL);
- return GL_TRUE;
+ return true;
}
GLboolean
* is NULL at that point. We can't call _mesa_makecurrent()
* first, since we need the buffer size for the initial
* viewport. So just call intel_draw_buffer() again here. */
- intel_draw_buffer(&intel->ctx, intel->ctx.DrawBuffer);
+ intel_draw_buffer(&intel->ctx);
}
else {
_mesa_make_current(NULL, NULL, NULL);
}
- return GL_TRUE;
+ return true;
}
/**
assert(stencil_rb->Base.Format == MESA_FORMAT_S8);
assert(depth_rb && depth_rb->Base.Format == MESA_FORMAT_X8_Z24);
- if (stencil_rb->region->tiling == I915_TILING_Y) {
+ if (stencil_rb->region->tiling == I915_TILING_NONE) {
+ /*
+ * The stencil buffer is actually W tiled. The region's tiling is
+ * I915_TILING_NONE, however, because the GTT is incapable of W
+ * fencing.
+ */
intel->intelScreen->dri2_has_hiz = INTEL_DRI2_HAS_HIZ_TRUE;
return;
} else {
* a combined depth/stencil buffer. Discard the hiz buffer too.
*/
intel->intelScreen->dri2_has_hiz = INTEL_DRI2_HAS_HIZ_FALSE;
+ if (intel->must_use_separate_stencil) {
+ _mesa_problem(&intel->ctx,
+ "intel_context requires separate stencil, but the "
+ "DRIscreen does not support it. You may need to "
+ "upgrade the Intel X driver to 2.16.0");
+ abort();
+ }
/* 1. Discard depth and stencil renderbuffers. */
_mesa_remove_renderbuffer(fb, BUFFER_DEPTH);
* Presently, however, no verification or clean up is necessary, and
* execution should not reach here. If the framebuffer still has a hiz
* region, then we have already set dri2_has_hiz to true after
- * confirming above that the stencil buffer is Y tiled.
+ * confirming above that the stencil buffer is W tiled.
*/
assert(0);
}