mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
i915: Fix build since hiz merge.
v2: Guard against rb->mt being NULL, since we may enter the draw regions path before intel_prepare_render() has been called to set them. Reviewed-by: Chad Versace <chad.versace@linux.intel.com> (v1)
This commit is contained in:
parent
ca4e664f21
commit
87f12bb2d9
6 changed files with 29 additions and 24 deletions
|
|
@ -16,6 +16,7 @@ i915_C_SOURCES := \
|
|||
intel_extensions.c \
|
||||
intel_extensions_es.c \
|
||||
intel_mipmap_tree.c \
|
||||
intel_resolve_map.c \
|
||||
intel_tex_layout.c \
|
||||
intel_tex_image.c \
|
||||
intel_tex_subimage.c \
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
|
||||
#include "intel_screen.h"
|
||||
#include "intel_batchbuffer.h"
|
||||
#include "intel_mipmap_tree.h"
|
||||
#include "intel_fbo.h"
|
||||
#include "intel_buffers.h"
|
||||
|
||||
|
|
@ -848,7 +849,7 @@ i830Enable(struct gl_context * ctx, GLenum cap, GLboolean state)
|
|||
if (ctx->DrawBuffer) {
|
||||
struct intel_renderbuffer *irbStencil
|
||||
= intel_get_renderbuffer(ctx->DrawBuffer, BUFFER_STENCIL);
|
||||
hw_stencil = (irbStencil && irbStencil->region);
|
||||
hw_stencil = (irbStencil && irbStencil->mt->region);
|
||||
}
|
||||
if (hw_stencil) {
|
||||
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include "i830_context.h"
|
||||
#include "i830_reg.h"
|
||||
#include "intel_batchbuffer.h"
|
||||
#include "intel_mipmap_tree.h"
|
||||
#include "intel_regions.h"
|
||||
#include "intel_tris.h"
|
||||
#include "intel_fbo.h"
|
||||
|
|
@ -760,7 +761,7 @@ i830_update_draw_buffer(struct intel_context *intel)
|
|||
|
||||
for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
|
||||
irb = intel_renderbuffer(fb->_ColorDrawBuffers[i]);
|
||||
colorRegions[i] = irb ? irb->region : NULL;
|
||||
colorRegions[i] = (irb && irb->mt) ? irb->mt->region : NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -778,7 +779,7 @@ i830_update_draw_buffer(struct intel_context *intel)
|
|||
/* drawing to user-created FBO */
|
||||
struct intel_renderbuffer *irb;
|
||||
irb = intel_renderbuffer(fb->_ColorDrawBuffers[0]);
|
||||
colorRegions[0] = (irb && irb->region) ? irb->region : NULL;
|
||||
colorRegions[0] = (irb && irb->mt->region) ? irb->mt->region : NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -790,10 +791,10 @@ i830_update_draw_buffer(struct intel_context *intel)
|
|||
}
|
||||
|
||||
/* Check for depth fallback. */
|
||||
if (irbDepth && irbDepth->region) {
|
||||
if (irbDepth && irbDepth->mt) {
|
||||
FALLBACK(intel, INTEL_FALLBACK_DEPTH_BUFFER, false);
|
||||
depthRegion = irbDepth->region;
|
||||
} else if (irbDepth && !irbDepth->region) {
|
||||
depthRegion = irbDepth->mt->region;
|
||||
} else if (irbDepth && !irbDepth->mt) {
|
||||
FALLBACK(intel, INTEL_FALLBACK_DEPTH_BUFFER, true);
|
||||
depthRegion = NULL;
|
||||
} else { /* !irbDepth */
|
||||
|
|
@ -803,10 +804,10 @@ i830_update_draw_buffer(struct intel_context *intel)
|
|||
}
|
||||
|
||||
/* Check for stencil fallback. */
|
||||
if (irbStencil && irbStencil->region) {
|
||||
if (irbStencil && irbStencil->mt) {
|
||||
assert(irbStencil->Base.Format == MESA_FORMAT_S8_Z24);
|
||||
FALLBACK(intel, INTEL_FALLBACK_STENCIL_BUFFER, false);
|
||||
} else if (irbStencil && !irbStencil->region) {
|
||||
} else if (irbStencil && !irbStencil->mt) {
|
||||
FALLBACK(intel, INTEL_FALLBACK_STENCIL_BUFFER, true);
|
||||
} else { /* !irbStencil */
|
||||
/* No fallback is needed because there is no stencil buffer. */
|
||||
|
|
@ -816,9 +817,9 @@ i830_update_draw_buffer(struct intel_context *intel)
|
|||
/* If we have a (packed) stencil buffer attached but no depth buffer,
|
||||
* we still need to set up the shared depth/stencil state so we can use it.
|
||||
*/
|
||||
if (depthRegion == NULL && irbStencil && irbStencil->region
|
||||
if (depthRegion == NULL && irbStencil && irbStencil->mt
|
||||
&& irbStencil->Base.Format == MESA_FORMAT_S8_Z24) {
|
||||
depthRegion = irbStencil->region;
|
||||
depthRegion = irbStencil->mt->region;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ i915_miptree_layout_cube(struct intel_mipmap_tree * mt)
|
|||
mt->total_height = dim * 4;
|
||||
|
||||
for (level = mt->first_level; level <= mt->last_level; level++) {
|
||||
intel_miptree_set_level_info(mt, level, 6,
|
||||
intel_miptree_set_level_info(mt, level,
|
||||
0, 0,
|
||||
lvlWidth, lvlHeight,
|
||||
1);
|
||||
|
|
@ -167,7 +167,7 @@ i915_miptree_layout_3d(struct intel_mipmap_tree * mt)
|
|||
|
||||
/* XXX: hardware expects/requires 9 levels at minimum. */
|
||||
for (level = mt->first_level; level <= MAX2(8, mt->last_level); level++) {
|
||||
intel_miptree_set_level_info(mt, level, depth, 0, mt->total_height,
|
||||
intel_miptree_set_level_info(mt, level, 0, mt->total_height,
|
||||
width, height, depth);
|
||||
|
||||
stack_height += MAX2(2, height);
|
||||
|
|
@ -208,7 +208,7 @@ i915_miptree_layout_2d(struct intel_mipmap_tree * mt)
|
|||
mt->total_height = 0;
|
||||
|
||||
for (level = mt->first_level; level <= mt->last_level; level++) {
|
||||
intel_miptree_set_level_info(mt, level, 1,
|
||||
intel_miptree_set_level_info(mt, level,
|
||||
0, mt->total_height,
|
||||
width, height, 1);
|
||||
|
||||
|
|
@ -335,7 +335,7 @@ i945_miptree_layout_cube(struct intel_mipmap_tree * mt)
|
|||
|
||||
/* Set all the levels to effectively occupy the whole rectangular region. */
|
||||
for (level = mt->first_level; level <= mt->last_level; level++) {
|
||||
intel_miptree_set_level_info(mt, level, 6,
|
||||
intel_miptree_set_level_info(mt, level,
|
||||
0, 0,
|
||||
lvlWidth, lvlHeight, 1);
|
||||
lvlWidth /= 2;
|
||||
|
|
@ -421,7 +421,7 @@ i945_miptree_layout_3d(struct intel_mipmap_tree * mt)
|
|||
GLint y = 0;
|
||||
GLint q, j;
|
||||
|
||||
intel_miptree_set_level_info(mt, level, depth,
|
||||
intel_miptree_set_level_info(mt, level,
|
||||
0, mt->total_height,
|
||||
width, height, depth);
|
||||
|
||||
|
|
@ -469,7 +469,7 @@ i945_miptree_layout(struct intel_mipmap_tree * mt)
|
|||
case GL_TEXTURE_1D:
|
||||
case GL_TEXTURE_2D:
|
||||
case GL_TEXTURE_RECTANGLE_ARB:
|
||||
i945_miptree_layout_2d(mt, 1);
|
||||
i945_miptree_layout_2d(mt);
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(NULL, "Unexpected tex target in i945_miptree_layout()");
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
#include "swrast_setup/swrast_setup.h"
|
||||
|
||||
#include "intel_batchbuffer.h"
|
||||
#include "intel_mipmap_tree.h"
|
||||
#include "intel_regions.h"
|
||||
#include "intel_tris.h"
|
||||
#include "intel_fbo.h"
|
||||
|
|
@ -755,15 +756,15 @@ i915_update_draw_buffer(struct intel_context *intel)
|
|||
} else {
|
||||
struct intel_renderbuffer *irb;
|
||||
irb = intel_renderbuffer(fb->_ColorDrawBuffers[0]);
|
||||
colorRegion = irb ? irb->region : NULL;
|
||||
colorRegion = (irb && irb->mt) ? irb->mt->region : NULL;
|
||||
FALLBACK(intel, INTEL_FALLBACK_DRAW_BUFFER, false);
|
||||
}
|
||||
|
||||
/* Check for depth fallback. */
|
||||
if (irbDepth && irbDepth->region) {
|
||||
if (irbDepth && irbDepth->mt) {
|
||||
FALLBACK(intel, INTEL_FALLBACK_DEPTH_BUFFER, false);
|
||||
depthRegion = irbDepth->region;
|
||||
} else if (irbDepth && !irbDepth->region) {
|
||||
depthRegion = irbDepth->mt->region;
|
||||
} else if (irbDepth && !irbDepth->mt) {
|
||||
FALLBACK(intel, INTEL_FALLBACK_DEPTH_BUFFER, true);
|
||||
depthRegion = NULL;
|
||||
} else { /* !irbDepth */
|
||||
|
|
@ -773,10 +774,10 @@ i915_update_draw_buffer(struct intel_context *intel)
|
|||
}
|
||||
|
||||
/* Check for stencil fallback. */
|
||||
if (irbStencil && irbStencil->region) {
|
||||
if (irbStencil && irbStencil->mt) {
|
||||
assert(irbStencil->Base.Format == MESA_FORMAT_S8_Z24);
|
||||
FALLBACK(intel, INTEL_FALLBACK_STENCIL_BUFFER, false);
|
||||
} else if (irbStencil && !irbStencil->region) {
|
||||
} else if (irbStencil && !irbStencil->mt) {
|
||||
FALLBACK(intel, INTEL_FALLBACK_STENCIL_BUFFER, true);
|
||||
} else { /* !irbStencil */
|
||||
/* No fallback is needed because there is no stencil buffer. */
|
||||
|
|
@ -786,9 +787,9 @@ i915_update_draw_buffer(struct intel_context *intel)
|
|||
/* If we have a (packed) stencil buffer attached but no depth buffer,
|
||||
* we still need to set up the shared depth/stencil state so we can use it.
|
||||
*/
|
||||
if (depthRegion == NULL && irbStencil && irbStencil->region
|
||||
if (depthRegion == NULL && irbStencil && irbStencil->mt
|
||||
&& irbStencil->Base.Format == MESA_FORMAT_S8_Z24) {
|
||||
depthRegion = irbStencil->region;
|
||||
depthRegion = irbStencil->mt->region;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
1
src/mesa/drivers/dri/i915/intel_resolve_map.c
Symbolic link
1
src/mesa/drivers/dri/i915/intel_resolve_map.c
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../intel/intel_resolve_map.c
|
||||
Loading…
Add table
Reference in a new issue