diff options
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_fbo.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_fbo.c | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c index 84dbbc1e032..def162d10d0 100644 --- a/src/mesa/drivers/dri/i965/intel_fbo.c +++ b/src/mesa/drivers/dri/i965/intel_fbo.c @@ -88,7 +88,7 @@ intel_map_renderbuffer(struct gl_context *ctx, GLubyte **out_map, GLint *out_stride) { - struct intel_context *intel = intel_context(ctx); + struct brw_context *brw = brw_context(ctx); struct swrast_renderbuffer *srb = (struct swrast_renderbuffer *)rb; struct intel_renderbuffer *irb = intel_renderbuffer(rb); void *map; @@ -103,7 +103,7 @@ intel_map_renderbuffer(struct gl_context *ctx, return; } - intel_prepare_render(intel); + intel_prepare_render(brw); /* For a window-system renderbuffer, we need to flip the mapping we receive * upside-down. So we need to ask for a rectangle on flipped vertically, and @@ -113,7 +113,7 @@ intel_map_renderbuffer(struct gl_context *ctx, y = rb->Height - y - h; } - intel_miptree_map(intel, irb->mt, irb->mt_level, irb->mt_layer, + intel_miptree_map(brw, irb->mt, irb->mt_level, irb->mt_layer, x, y, w, h, mode, &map, &stride); if (rb->Name == 0) { @@ -136,7 +136,7 @@ static void intel_unmap_renderbuffer(struct gl_context *ctx, struct gl_renderbuffer *rb) { - struct intel_context *intel = intel_context(ctx); + struct brw_context *brw = brw_context(ctx); struct swrast_renderbuffer *srb = (struct swrast_renderbuffer *)rb; struct intel_renderbuffer *irb = intel_renderbuffer(rb); @@ -149,7 +149,7 @@ intel_unmap_renderbuffer(struct gl_context *ctx, return; } - intel_miptree_unmap(intel, irb->mt, irb->mt_level, irb->mt_layer); + intel_miptree_unmap(brw, irb->mt, irb->mt_level, irb->mt_layer); } @@ -191,6 +191,7 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer GLenum internalFormat, GLuint width, GLuint height) { + struct brw_context *brw = brw_context(ctx); struct intel_context *intel = intel_context(ctx); struct intel_screen *screen = intel->intelScreen; struct intel_renderbuffer *irb = intel_renderbuffer(rb); @@ -235,7 +236,7 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer if (width == 0 || height == 0) return true; - irb->mt = intel_miptree_create_for_renderbuffer(intel, rb->Format, + irb->mt = intel_miptree_create_for_renderbuffer(brw, rb->Format, width, height, rb->NumSamples); if (!irb->mt) @@ -250,6 +251,7 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, void *image_handle) { + struct brw_context *brw = brw_context(ctx); struct intel_context *intel = intel_context(ctx); struct intel_renderbuffer *irb; __DRIscreen *screen; @@ -264,7 +266,7 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx, /* __DRIimage is opaque to the core so it has to be checked here */ switch (image->format) { case MESA_FORMAT_RGBA8888_REV: - _mesa_error(&intel->ctx, GL_INVALID_OPERATION, + _mesa_error(ctx, GL_INVALID_OPERATION, "glEGLImageTargetRenderbufferStorage(unsupported image format"); return; break; @@ -274,7 +276,7 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx, irb = intel_renderbuffer(rb); intel_miptree_release(&irb->mt); - irb->mt = intel_miptree_create_for_bo(intel, + irb->mt = intel_miptree_create_for_bo(brw, image->region->bo, image->format, image->offset, @@ -289,8 +291,7 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx, rb->Width = image->region->width; rb->Height = image->region->height; rb->Format = image->format; - rb->_BaseFormat = _mesa_base_fbo_format(&intel->ctx, - image->internal_format); + rb->_BaseFormat = _mesa_base_fbo_format(ctx, image->internal_format); rb->NeedsFinishRenderTexture = true; } @@ -409,7 +410,7 @@ intel_new_renderbuffer(struct gl_context * ctx, GLuint name) } static bool -intel_renderbuffer_update_wrapper(struct intel_context *intel, +intel_renderbuffer_update_wrapper(struct brw_context *brw, struct intel_renderbuffer *irb, struct gl_texture_image *image, uint32_t layer) @@ -440,8 +441,8 @@ intel_renderbuffer_update_wrapper(struct intel_context *intel, intel_renderbuffer_set_draw_offset(irb); - if (mt->hiz_mt == NULL && brw_is_hiz_depth_format(intel, rb->Format)) { - intel_miptree_alloc_hiz(intel, mt); + if (mt->hiz_mt == NULL && brw_is_hiz_depth_format(brw, rb->Format)) { + intel_miptree_alloc_hiz(brw, mt); if (!mt->hiz_mt) return false; } @@ -475,7 +476,7 @@ intel_render_texture(struct gl_context * ctx, struct gl_framebuffer *fb, struct gl_renderbuffer_attachment *att) { - struct intel_context *intel = intel_context(ctx); + struct brw_context *brw = brw_context(ctx); struct gl_renderbuffer *rb = att->Renderbuffer; struct intel_renderbuffer *irb = intel_renderbuffer(rb); struct gl_texture_image *image = rb->TexImage; @@ -502,7 +503,7 @@ intel_render_texture(struct gl_context * ctx, intel_miptree_check_level_layer(mt, att->TextureLevel, layer); - if (!intel_renderbuffer_update_wrapper(intel, irb, image, layer)) { + if (!intel_renderbuffer_update_wrapper(brw, irb, image, layer)) { _swrast_render_texture(ctx, fb, att); return; } @@ -520,7 +521,7 @@ intel_render_texture(struct gl_context * ctx, static void intel_finish_render_texture(struct gl_context * ctx, struct gl_renderbuffer *rb) { - struct intel_context *intel = intel_context(ctx); + struct brw_context *brw = brw_context(ctx); DBG("Finish render %s texture\n", _mesa_get_format_name(rb->Format)); @@ -529,7 +530,7 @@ intel_finish_render_texture(struct gl_context * ctx, struct gl_renderbuffer *rb) * batch. Once again, we wish for a domain tracker in libdrm to cover * usage inside of a batchbuffer like GEM does in the kernel. */ - intel_batchbuffer_emit_mi_flush(intel); + intel_batchbuffer_emit_mi_flush(brw); } #define fbo_incomplete(fb, ...) do { \ @@ -550,6 +551,7 @@ intel_finish_render_texture(struct gl_context * ctx, struct gl_renderbuffer *rb) static void intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) { + struct brw_context *brw = brw_context(ctx); struct intel_context *intel = intel_context(ctx); struct intel_renderbuffer *depthRb = intel_get_renderbuffer(fb, BUFFER_DEPTH); @@ -641,7 +643,7 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) continue; } - if (!brw_render_target_supported(intel, rb)) { + if (!brw_render_target_supported(brw, rb)) { fbo_incomplete(fb, "FBO incomplete: Unsupported HW " "texture/renderbuffer format attached: %s\n", _mesa_get_format_name(intel_rb_format(irb))); @@ -665,6 +667,7 @@ intel_blit_framebuffer_with_blitter(struct gl_context *ctx, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { + struct brw_context *brw = brw_context(ctx); struct intel_context *intel = intel_context(ctx); if (mask & GL_COLOR_BUFFER_BIT) { @@ -726,7 +729,7 @@ intel_blit_framebuffer_with_blitter(struct gl_context *ctx, return mask; } - if (!intel_miptree_blit(intel, + if (!intel_miptree_blit(brw, src_irb->mt, src_irb->mt_level, src_irb->mt_layer, srcX0, srcY0, src_rb->Name == 0, @@ -752,7 +755,7 @@ intel_blit_framebuffer(struct gl_context *ctx, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { - mask = brw_blorp_framebuffer(intel_context(ctx), + mask = brw_blorp_framebuffer(brw_context(ctx), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); @@ -814,11 +817,11 @@ intel_renderbuffer_set_needs_depth_resolve(struct intel_renderbuffer *irb) } bool -intel_renderbuffer_resolve_hiz(struct intel_context *intel, +intel_renderbuffer_resolve_hiz(struct brw_context *brw, struct intel_renderbuffer *irb) { if (irb->mt) - return intel_miptree_slice_resolve_hiz(intel, + return intel_miptree_slice_resolve_hiz(brw, irb->mt, irb->mt_level, irb->mt_layer); @@ -827,11 +830,11 @@ intel_renderbuffer_resolve_hiz(struct intel_context *intel, } bool -intel_renderbuffer_resolve_depth(struct intel_context *intel, +intel_renderbuffer_resolve_depth(struct brw_context *brw, struct intel_renderbuffer *irb) { if (irb->mt) - return intel_miptree_slice_resolve_depth(intel, + return intel_miptree_slice_resolve_depth(brw, irb->mt, irb->mt_level, irb->mt_layer); @@ -840,7 +843,7 @@ intel_renderbuffer_resolve_depth(struct intel_context *intel, } void -intel_renderbuffer_move_to_temp(struct intel_context *intel, +intel_renderbuffer_move_to_temp(struct brw_context *brw, struct intel_renderbuffer *irb, bool invalidate) { @@ -851,7 +854,7 @@ intel_renderbuffer_move_to_temp(struct intel_context *intel, intel_miptree_get_dimensions_for_image(rb->TexImage, &width, &height, &depth); - new_mt = intel_miptree_create(intel, rb->TexImage->TexObject->Target, + new_mt = intel_miptree_create(brw, rb->TexImage->TexObject->Target, intel_image->base.Base.TexFormat, intel_image->base.Base.Level, intel_image->base.Base.Level, @@ -860,11 +863,11 @@ intel_renderbuffer_move_to_temp(struct intel_context *intel, irb->mt->num_samples, INTEL_MIPTREE_TILING_ANY); - if (brw_is_hiz_depth_format(intel, new_mt->format)) { - intel_miptree_alloc_hiz(intel, new_mt); + if (brw_is_hiz_depth_format(brw, new_mt->format)) { + intel_miptree_alloc_hiz(brw, new_mt); } - intel_miptree_copy_teximage(intel, intel_image, new_mt, invalidate); + intel_miptree_copy_teximage(brw, intel_image, new_mt, invalidate); intel_miptree_reference(&irb->mt, intel_image->mt); intel_renderbuffer_set_draw_offset(irb); @@ -876,8 +879,9 @@ intel_renderbuffer_move_to_temp(struct intel_context *intel, * Hook in device driver functions. */ void -intel_fbo_init(struct intel_context *intel) +intel_fbo_init(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; intel->ctx.Driver.NewFramebuffer = intel_new_framebuffer; intel->ctx.Driver.NewRenderbuffer = intel_new_renderbuffer; intel->ctx.Driver.MapRenderbuffer = intel_map_renderbuffer; |